簡體   English   中英

如何以更好的方式使用KeyDown事件驗證?

[英]How to use of KeyDown Event Validation in a better way?

我有幾個文本框,只需要數字輸入即可。 問題是我必須將下面的代碼復制並粘貼到另一個僅允許數字值的TextBox中。 有沒有更簡單的實現方法? 例如使用函數還是繼承?

private void txtCheckVoucher_Amount_KeyDown(object sender, KeyEventArgs e)
{
     if (Control.ModifierKeys == Keys.Shift)
     {
           e.SuppressKeyPress = true;
           return;
     }

     if (((e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9) ||
             (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9) ||
              e.KeyCode == Keys.Decimal || e.KeyCode == Keys.OemPeriod ||
              e.KeyCode == Keys.Back || e.KeyCode == Keys.Tab ||
              e.KeyCode == Keys.Left || e.KeyCode == Keys.Right ||
              e.KeyCode == Keys.End || e.KeyCode == Keys.Home ||
              e.KeyCode == Keys.ShiftKey || e.KeyCode == Keys.Delete))
     {

     }
     else if (e.KeyCode >= Keys.A || e.KeyCode <= Keys.Z)
              e.SuppressKeyPress = true;
}

您可以通過三種方式進行

  1. 您可以使用通用功能來檢查輸入的密鑰是否有效。 然后從所有關鍵事件處理程序中調用該函數。 如果文本框的格式不同,則此方法適用。
  2. 如果所有文本框的格式相同,則將所有按鍵事件處理程序綁定到同一函數。
  3. 您可以使用自定義文本框控件,該控件僅接受必需的鍵。 查看這篇文章,可能會對您有所幫助。

通常,您可以通過((System.Windows.Forms.Control)(sender)).Name來檢索文本框控件的ID /名稱((System.Windows.Forms.Control)(sender)).Name

希望這可以幫助。

如果文本框需要相同的KeyDown事件邏輯,為什么不將兩個文本框都訂閱到同一事件處理程序呢?

您可以將KeyDown事件設置為相同的txtCheckVoucher_Amount_KeyDown()方法。

您可以從所有其他文本框的KeyDown事件中調用txtCheckVoucher_Amount_KeyDown()。

簡單地將相同的KeyDown事件txtCheckVoucher_Amount_KeyDown()分配給所有文本框

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM