2013-02-16 41 views

回答

5

不要亂用CapsLock鍵。永遠不會 - 這是非常糟糕的用戶體驗。

相反,您應該在相應的文本框中處理KeyPress事件,並根據您的設置將字符轉換爲大寫或小寫。就像這樣:

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
     { 
      e.KeyChar = char.ToUpper(e.KeyChar); 
     } 
    } 
} 
+0

永遠不要說'從來沒有':P我正在開發一個uiAccess輔助程序,幫助盲人使用語音識別來混淆CapsLock密鑰。 – servermanfail 2014-02-14 06:49:22

+0

@servermanfail這是一個可以接受的原因:) – slugster 2014-02-14 11:58:31

1

基礎上,進一步分析和從各種渠道 下面深入的研究是我編碼,以解決我張貼早些時候

/// <summary> 
    /// Enabling or Disabling CAPSLOCK button. 
    /// Based on value retirevied from settings and also present CAPSLOCK button status. 
    /// </summary> 
    public void CharacterCasing() 
    { 
     if (settings.IsCapsLockOn^Console.CapsLock) 
     { 
      const int KEYEVENTF_EXTENDEDKEY = 0x1; 
      const int KEYEVENTF_KEYUP = 0x2; 
      keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0); 
      keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0); 
     } 

    } 

你的投入和意見將是非常問題的代碼片段讚賞。

+0

我這樣做的原因是因爲有很多用戶控件的形式,我不得不處理的關鍵是不理想的按鍵,這些是遺留的用戶我們控制,所以我做了不想修改現有的代碼,這就是我不得不編寫上面提到的代碼片段的原因。 – 2013-02-16 16:57:26

+0

如果遺留用戶控件都來自公共基本用戶控件(例如「MyExtendedTextBox」),那麼您可以簡單地將代碼放在基本控件中 - 這是一個簡單且低風險的重構。即使他們目前沒有共同的用戶控件,創建和添加也很簡單。 – slugster 2013-02-16 21:17:42