關於WINFORM中輸入法的設定

2021-09-06 01:28:03 字數 3448 閱讀 4357

johnsuna(阿山net)的專欄

開發中正好遇到這類問題,網路真好啊:)下面是正文收集,感謝作者的辛勤工作給我們帶來的便利.

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

(一)control.imemode 屬性:獲取或設定控制項的輸入法編輯器 (ime) 模式。

(1)由於窗體屬性繼承關係,如果你的winform窗體中大部分需要設定為輸入法有效狀態,可以設定為form的imemode屬性為on.

(2)如果需要某些textbox為輸入法有效,則使用imemode.on

(3)對於僅用於輸入數值的 textbox 控制項,imemode 屬性通常設定為 imemode.off。對於 form 類,imemode 屬性值設定為 imemode.nocontrol。

(4)不直接支援輸入方法編輯器或允許從 ime 直接輸入的大多數類將此屬性的值設定為 nocontrol。

//宣告一些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)

}
}

重要事項:

除非 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

private

void languagechange(object sender, inputlanguagechangedeventargs e)

}
public

static

void main(string args)

}

trackback:

補充:輸入法——討厭的全形

沒有廣告的輸入法 關於輸入法的若干問題

其實,對我個人來講,輸入法還是很少讓我產生困惑的。因為我可能是現在的少有的還會用五筆的一批人中的乙個。其實學五筆完全是個人原因,我的發音在平舌音與翹舌音的區分上真是很難區分開。所以在拼音輸入法上,天然就不舒服,還是無意間發現的 五筆 輸入法這個神器。只要會寫就能輸入了。於是確實是下了一定的力氣,學會...

linux 關於輸入法的安裝

fcitx 小企鵝輸入法 free chinese input toy for x是乙個以gpl方式發布的 基於xim的簡體中文輸入法集合 原為g五筆 包括五筆 五筆拼音 二筆 倉頡 晚風 冰蟾全息 拼音 全拼和雙拼 區位以及碼表輸入模組。fcitx是非常輕巧的輸入法,但是原作者於2007年夏終止了...

關於搜狗輸入法的評價

使用者介面 記住使用者選擇 當使用者使用搜狗輸入法時,搜狗可以記住使用者當前的打字習慣,當再次輸入相同的字母時,會將使用者上次選擇的偏好置為首選項。短期刺激 提醒使用者關於搜狗 的更新。長期使用的好處和壞處 好處 記住使用者的偏好,使使用者可以更快 更準確的打字。壞處 當使用者輸入錯誤時,不會顯示正...