新聞速報

        

2026年7月2日 星期四

C# 輸入框 搭配光罩使用 (模擬KEYBOARD)

 C# 輸入框 搭配光罩使用 (模擬KEYBOARD)


1. 文字框 屬性設定

.ImeMode = System.Windows.Forms.ImeMode.Disable;    //禁止 中文輸入法

.ShortcutsEnabled = false;     //停用 右鍵選單 複製貼上 全形字 



2. 新增 KeyPress 事件,讓掃描器輸入的英文字母不受 CapsLock 影響,且維持原始字元(不轉大寫)

        private void texInputText_KeyPress(object sender, KeyPressEventArgs e)

        {

            // 僅針對英文字母 A-Z / a-z 處理

            bool isLetter = (e.KeyChar >= 'a' && e.KeyChar <= 'z') ||

                            (e.KeyChar >= 'A' && e.KeyChar <= 'Z');


            if (isLetter)

            {

                // 若 CapsLock 開啟,Windows 會自動反轉大小寫

                // 為了「不受 CapsLock 影響」且「維持掃描器原始字元」,手動再反轉一次即可還原

                if (Control.IsKeyLocked(Keys.CapsLock))

                {

                    e.KeyChar = char.IsUpper(e.KeyChar) ? char.ToLower(e.KeyChar) : char.ToUpper(e.KeyChar);

                }

            }

        }



3. 新增 TextChanged 事件,過濾掉非 ASCII 可顯示字元,避免掃描器輸入的特殊字元造成系統不穩定  防範滑鼠右鍵貼上中文

        private void texInputText_TextChanged(object sender, EventArgs e)

        {

            // 僅保留 ASCII 可顯示字元 (含英數、符號、空白)

            var filtered = new string(texInputText.Text.Where(c => c <= 127).ToArray());

            if (filtered != texInputText.Text)

            {

                int selStart = texInputText.SelectionStart;

                texInputText.Text = filtered;

                texInputText.SelectionStart = selStart - 1;

            }

        }



沒有留言:

張貼留言