[英]Is there a way to switch between installed windows keyboard layouts in c#?
我有兩個文本框,一個用於英語,一個用於俄語。 為了易於使用,我想知道c#中是否有某些內容可以告訴我的系統切換到已安裝的鍵盤布局之一。
然后,我計划設置一種方法,以使其中一個文本框成為焦點時立即執行此操作。
因此,當俄語框處於焦點位置時,將使用Windows俄語鍵盤布局,反之亦然。
我在網上搜索了一下,但沒有找到任何種類。 因為我希望它早點完成,所以我做了一個變通辦法,只是使用Input-simulator模擬了在Windows上切換鍵盤布局所必需的按鍵。 現在,我正在尋找更好的解決方案。
Public Form1()
{
// I use the method when either of the text-boxes are used.
// When I find a better solution, there will obviously be two separate methods
txtRussian.GotFocus += SwitchKeyboard;
txtEnglish.GotFocus += SwitchKeyboard;
}
private void SwitchKeyboard(object sender, EventArgs e)
{
// shift alt for keyboard layout switch
sim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.SHIFT,VirtualKeyCode.LMENU);
// LMENU (Left Alt) tends to still be pressed after you he finished the modified keystroke.
// So that makes any first key the user presses be the "LAlt + {a key}" instead of just a key.
// By normally simulating its press again the issue is gone
sim.Keyboard.KeyPress(VirtualKeyCode.LMENU);
}
當然,這不是我真正想要的,因為每當您交替進入和退出選項卡並重新關注文本框時,它只會切換到安裝的下一個鍵盤布局,而不是為其指定的鍵盤布局。文本框的意思。
是的,有沒有一種方法可以使用C#切換到指定的Windows鍵盤布局?
System.Windows.Forms命名空間中有“ InputLanguage”類。 您可以使用“ InputLanguage.CurrentInputLanguage”屬性來更改當前使用的鍵盤布局。
在stackoverflow上已經有關於此的另一篇文章: C#-在相同鍵盤布局的兩個不同IME之間自動切換
但是,您只能使用該語言更改輸入語言,而不能更改語言內部的布局。 但是我認為您需要更改輸入語言。 如果還需要更改語言的輸入布局,可以通過設置TextBox的.ImeMode屬性來進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.