国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中Winfrom默認輸入法的設置方法

2020-01-24 01:50:35
字體:
來源:轉載
供稿:網友

本文實例講述了C#中Winfrom默認輸入法的設置方法。分享給大家供大家參考。具體分析如下:

在WINFORM中我們經常遇到文本輸入框中輸入法被禁用或老是變全角輸入法等問題,經查閱相關資料,現小結如下:

一、Control.ImeMode 屬性:獲取或設置控件的輸入法編輯器 (IME) 模式。

(1)由于窗體屬性繼承關系,如果你的WINFORM窗體中大部分需要設置為輸入法有效狀態,可以設置為FORM的ImeMode屬性為On.
(2)如果需要某些TextBox為輸入法有效,則使用ImeMode.On
(3)如果需要設置整個窗體的輸入法全部為半角,可以使用以下代碼:

#region 修正輸入法全角/半角的問題//聲明一些API函數 [DllImport("imm32.dll")]public static extern IntPtr ImmGetContext(IntPtr hwnd);[DllImport("imm32.dll")]public static extern bool ImmGetOpenStatus(IntPtr himc);[DllImport("imm32.dll")]public static extern bool ImmSetOpenStatus(IntPtr himc, bool b);[DllImport("imm32.dll")]public static extern bool ImmGetConversionStatus(IntPtr himc, ref int lpdw, ref  int lpdw2);[DllImport("imm32.dll")]public static extern int ImmSimulateHotKey(IntPtr hwnd, int lngHotkey);private const int IME_CMODE_FULLSHAPE = 0x8;private const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11;protected override void OnActivated(EventArgs e){  base.OnActivated(e);  IntPtr HIme = ImmGetContext(this.Handle);    //如果輸入法處于打開狀態   if (ImmGetOpenStatus(HIme))  {    int iMode = 0;    int iSentence = 0;    //檢索輸入法信息     bool bSuccess = ImmGetConversionStatus(HIme, ref iMode, ref iSentence);      if (bSuccess)    {      //如果是全角,轉換成半角       if ((iMode & IME_CMODE_FULLSHAPE) > 0)            ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE);        }  }}#endregion 修正輸入法全角/半角的問題

注意:需要引用以下命名空間:using System.Runtime.InteropServices; 

(4)對于僅用于輸入數值的 TextBox 控件,ImeMode 屬性通常設置為 ImeMode.Off。對于 Form 類,ImeMode 屬性值設置為 ImeMode.NoControl。

(5)不直接支持輸入方法編輯器或允許從 IME 直接輸入的大多數類將此屬性的值設置為 NoControl。

重要事項:

除非 ImeMode 已經以編程方式設置為 ImeMode.Disable,否則用戶能夠以交互方式更改它。在前一種情況下,用戶將無法使用 IME。

二、ImeMode各屬性的含義:

ImeMode 枚舉:指定一個值,該值是用來確定在選定了對象時該對象的輸入法編輯器 (IME) 的狀態。

以下是微軟的解釋:

  成員名稱 說明
  Alpha 字母數字單字節字符 (SBC)。此設置僅對朝鮮語和日語 IME 有效。 
  AlphaFull 字母數字雙字節字符。此設置僅對朝鮮語和日語 IME 有效。 
  Close  
  Disable IME 被禁用。如果使用此設置,則用戶無法從鍵盤打開 IME,而且 IME 浮動窗口處于隱藏狀態。 
  Hangul 朝鮮文 SBC。此設置僅對朝鮮語 IME 有效。 
  HangulFull 朝鮮文 DBC。此設置僅對朝鮮語 IME 有效。 
  Hiragana 平假名 DBC。此設置僅對日語 IME 有效。 
  Inherit 繼承父控件的 IME 模式。 
  Katakana 片假名 DBC。此設置僅對日語 IME 有效。 
  KatakanaHalf 片假名 SBC。此設置僅對日語 IME 有效。 
  NoControl 無(默認)。 
  Off IME 已關閉。此模式指示 IME 已關閉,這意味著該對象的行為方式與英語輸入模式相同。此設置僅對日語、簡體中文和繁體中文 IME 有效。 
  On IME 已打開。此值指示 IME 已打開,可以輸入中文或日語特定的字符。此設置僅對日語、簡體中文和繁體中文 IME 有效。 

 
備注:

輸入法編輯器 (IME) 允許用戶輸入和編輯中文、日語和朝鮮語字符。IME 是用于編寫中文、日語和朝鮮語腳本的基本組件。這些書寫體系具有的字符比可為常規鍵盤編碼的字符要多。這些語言的 IME 使用描述單個字符或成組字符的基字符序列,以便允許您輸入范圍較廣的一組字符。基字符可以是來自朝鮮文音節的成分字母、日語漢字字符的拼音成分,或者中文字符的各種組合。

三、如果設置為合適的輸入法?

這里僅給一個例子,打擊可以舉一返三:

using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;public class Form1 : System.Windows.Forms.Form{  RichTextBox rtb = new RichTextBox();  public Form1()  {    this.Controls.Add(rtb);    rtb.Dock = DockStyle.Fill;    this.InputLanguageChanged += new InputLanguageChangedEventHandler(languageChange);  }  private void languageChange(Object sender, InputLanguageChangedEventArgs e)  {    // If the input language is Japanese, set the initial IMEMode to Katakana.    if (e.InputLanguage.Culture.TwoLetterISOLanguageName.Equals("ja"))    {      rtb.ImeMode = System.Windows.Forms.ImeMode.Katakana;    }  }  public static void Main(string[] args)  {    Application.Run(new Form1());  }}

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 方城县| 黄陵县| 巴南区| 南召县| 武城县| 苏州市| 济源市| 黄梅县| 汉川市| 深圳市| 虞城县| 兴仁县| 汤阴县| 蒙山县| 长子县| 宿州市| 万安县| 荔浦县| 锦屏县| 临沧市| 五寨县| 张家港市| 长岛县| 冕宁县| 怀远县| 河北区| 无棣县| 珠海市| 天峻县| 房产| 定西市| 陆丰市| 思南县| 新丰县| 武安市| 剑阁县| 旌德县| 乌拉特后旗| 鹤峰县| 洛川县| 育儿|