欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中Winfrom默認(rèn)輸入法的設(shè)置方法

 更新時間:2015年05月18日 09:40:54   作者:永遠(yuǎn)愛好寫程序  
這篇文章主要介紹了C#中Winfrom默認(rèn)輸入法的設(shè)置方法,以實(shí)例形式較為詳細(xì)的分析了C#中輸入法設(shè)置的相關(guān)技巧,需要的朋友可以參考下

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

在WINFORM中我們經(jīng)常遇到文本輸入框中輸入法被禁用或老是變?nèi)禽斎敕ǖ葐栴},經(jīng)查閱相關(guān)資料,現(xiàn)小結(jié)如下:

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

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

#region 修正輸入法全角/半角的問題
//聲明一些API函數(shù) 
[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);  
  //如果輸入法處于打開狀態(tài) 
  if (ImmGetOpenStatus(HIme))
  {
    int iMode = 0;
    int iSentence = 0;
    //檢索輸入法信息 
    bool bSuccess = ImmGetConversionStatus(HIme, ref iMode, ref iSentence);  
    if (bSuccess)
    {
      //如果是全角,轉(zhuǎn)換成半角 
      if ((iMode & IME_CMODE_FULLSHAPE) > 0)    
        ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE);    
    }
  }
}
#endregion 修正輸入法全角/半角的問題

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

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

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

重要事項:

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

二、ImeMode各屬性的含義:

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

以下是微軟的解釋:

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

 
備注:

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

三、如果設(shè)置為合適的輸入法?

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

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#程序設(shè)計有所幫助。

相關(guān)文章

  • Winform 顯示Gif圖片的實(shí)例代碼

    Winform 顯示Gif圖片的實(shí)例代碼

    這篇文章主要介紹了Winform 顯示Gif圖片的實(shí)例代碼,有需要的朋友可以參考一下
    2014-01-01
  • C#從實(shí)體對象集合中導(dǎo)出Excel的代碼

    C#從實(shí)體對象集合中導(dǎo)出Excel的代碼

    數(shù)據(jù)的導(dǎo)出是項目中經(jīng)常要實(shí)現(xiàn)的功能,就拿最常見的要導(dǎo)出成Excel來說,網(wǎng)上看來看去,都是介紹從Datatable中導(dǎo)出
    2008-08-08
  • jQuery uploadify在谷歌和火狐瀏覽器上傳失敗的解決方案

    jQuery uploadify在谷歌和火狐瀏覽器上傳失敗的解決方案

    jquery.uploadify插件是一個基于jquery來實(shí)現(xiàn)上傳的,這個插件很好用,每一次向后臺發(fā)送數(shù)據(jù)流請求時,ie會自動把本地cookie存儲捆綁在一起發(fā)送給服務(wù)器。但firefox、chrome不會這樣做,他們會認(rèn)為這樣不安全,下面介紹下jQuery uploadify上傳失敗的解決方案
    2015-08-08
  • .net后臺獲取html控件值的2種方法

    .net后臺獲取html控件值的2種方法

    .net后臺獲取html控件值的2種方法,需要的朋友可以參考一下
    2013-04-04
  • C#使用帶like的sql語句時防sql注入的方法

    C#使用帶like的sql語句時防sql注入的方法

    這篇文章主要介紹了C#使用帶like的sql語句時防sql注入的方法,采用了一個比較簡單的字符串過濾方法就可以有效提高sql語句的安全性,防止sql注入,需要的朋友可以參考下
    2014-09-09
  • c#中多線程間的同步示例詳解

    c#中多線程間的同步示例詳解

    使用線程時最頭痛的就是共享資源的同步問題,處理不好會得到錯誤的結(jié)果,所以下面這篇文章主要給大家介紹了關(guān)于c#中多線程間同步的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • C#動態(tài)生成PictureBox并指定圖片的方法

    C#動態(tài)生成PictureBox并指定圖片的方法

    這篇文章主要介紹了C#動態(tài)生成PictureBox并指定圖片的方法,實(shí)例分析了C#圖形控件的動態(tài)生成及使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • VS2012 未找到與約束ContractName匹配的導(dǎo)出

    VS2012 未找到與約束ContractName匹配的導(dǎo)出

    這篇文章主要介紹了在更新的windows補(bǔ)丁后,Visual Studio 用戶可能無法打開或創(chuàng)建 C++ 或 JavaScript 文件或項目,小編的解決辦法,希望可以幫助到大家
    2018-04-04
  • C#編程簡單實(shí)現(xiàn)生成PDF文檔的方法示例

    C#編程簡單實(shí)現(xiàn)生成PDF文檔的方法示例

    這篇文章主要介紹了C#編程簡單實(shí)現(xiàn)生成PDF文檔的方法,結(jié)合實(shí)例形式分析了C#生成PDF文檔的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • C#實(shí)現(xiàn)拼圖游戲

    C#實(shí)現(xiàn)拼圖游戲

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)拼圖游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評論