簡體   English   中英

我想讓表單上的所有文本框都接受僅包含盡可能少的代碼的數字-C#

[英]I want make all textboxes on my form to accept only numbers with as little code as possible - c#

我正在制作一個相對簡單的軟件,該軟件具有相當多的文本框,並且我希望有一種方法可以只用一段代碼允許所有文本框中的數字以該形式存在。 我目前正在使用以下代碼,僅允許一個文本框使用數字,但這意味着對每個文本框重復這些行。

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
    {
        e.Handled = true;
    }
}

文本框也位於面板內,以防有所作為。

使用實現的方法創建派生的DigitsOnlyTextBox,並使用它代替TextBoxes。

正如Darek所說,一個可行的選擇是:

創建派生的DigitsOnlyTextBox,並實現該方法,並使用它代替TextBoxes

第二個選擇是簡單地將每個TextBox指向相同的事件處理程序。 例如,在Form.Designer.cs

this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxNumericOnly_KeyPress);
this.textBox2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxNumericOnly_KeyPress);
this.textBox3.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxNumericOnly_KeyPress);
...

然后您的處理程序:

private void textBoxNumericOnly_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
    {
        e.Handled = true;
    }
}

假設您正在使用Visual Studios,並且已經第一次創建了事件處理程序(針對textBox1 ),則可以在Form的設計器視圖中輕松完成所有操作:

默認處理程序 在VS中添加默認事件處理程序

復制Def處理程序 在VS中添加復制的事件處理程序

如果您使用的是Windows窗體而不是WPF,則可以使用MaskedTextBox

不知道您是否可以在WPF中復制該功能,而從未使用過。

暫無
暫無

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

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