C#表單程式屏蔽IME

來源:互聯網
上載者:User

        要在WinForm中屏蔽IME,設定以下幾個要素:

  1、在WinForm的InputLanguageChanging事件中添加e.Cancel = True

        2、鍵盤事件向表單註冊(表單內容)

注意:如果只是屏蔽系統的IME並且還要有切換IME的功能(系統切換IME會造成某些程式卡死),那麼在函數InputLanguageChanging中添加“切換IME的代碼”,這個切換IME的代碼不能加在其它地方,不然會引起IME浮動視窗和系統右下角IME表徵圖不一致,因為“切換IME的代碼”只會控制IME浮動視窗,而右下角IME表徵圖是根據IME浮動視窗值來切換的,自己切換IME的代碼如下:
        private void MainForm_InputLanguageChanging(object sender, InputLanguageChangingEventArgs e)
        {
            //程式禁止切換IME的訊息傳到Windows系統
            e.Cancel = true;

            int iCountLan = InputLanguage.InstalledInputLanguages.Count;

            //擷取當前IME的序號iFlagInputLan
            for (int i = 0; i < InputLanguage.InstalledInputLanguages.Count; i++)
            {
                if (InputLanguage.CurrentInputLanguage.LayoutName == InputLanguage.InstalledInputLanguages[i].LayoutName)
                {
                    iFlagInputLan = i;
                    break;
                }
            }
            //擷取下一個IME的序號iFlagInputLan
            if ((iFlagInputLan + 1) >= iCountLan)
            {
                iFlagInputLan = 0;
            }
            else
            {
                iFlagInputLan++;
            }
            //設定IME
            InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages[iFlagInputLan];
        }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.