程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中Winfrom默許輸出法的設置辦法

C#中Winfrom默許輸出法的設置辦法

編輯:C#入門知識

C#中Winfrom默許輸出法的設置辦法。本站提示廣大學習愛好者:(C#中Winfrom默許輸出法的設置辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中Winfrom默許輸出法的設置辦法正文


本文實例講述了C#中Winfrom默許輸出法的設置辦法。分享給年夜家供年夜家參考。詳細剖析以下:

在WINFORM中我們常常碰到文本輸出框中輸出法被禁用或總是變全角輸出法等成績,經查閱相干材料,現小結以下:

1、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。

2、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 應用描寫單個字符或成組字符的基字符序列,以便許可您輸出規模較廣的一組字符。基字符可所以來自朝鮮文音節的成份字母、日語漢字字符的拼音成份,或許中文字符的各類組合。

3、假如設置為適合的輸出法?

這裡僅給一個例子,襲擊可以舉一返三:

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#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved