![](/img/trans.png)
[英]Allow only {'delete' , 'backspace' , one '.' , '-' , numbers '0 to 9'} on a textbox C#/winforms
[英]Allow only decimal numbers in textbox in C#
我是 C# 新手,我想知道如何制作只接受數字的文本框。 因此,如果您輸入一個十進制數,那將沒有問題,但是當您輸入其他內容時,然后“0,1,2,3,4,5,6,7,8,9 或”,我希望將其刪除文本框。 我認為使用 KeyDown 或 TextChanged 是可能的。
這是我已經嘗試過的:
private void txt2011_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", txt2011.Text))
{
txt2011.Text = "0";
}
}
提前致謝
雖然NumericUpDown
是一個不錯的選擇,但你畢竟想要一個文本框,對吧?
這是一個通用指南。 首先你需要訂閱文本框的TextChanged
事件。 這可以通過雙擊設計器中的文本框來完成。 當事件發生時,您想要檢查文本框的文本。 如果它是空字符串,則返回。 現在您可以嘗試將文本轉換為雙精度。 如果無法轉換,請將文本設置為原始文本。
您可能希望在類中的某處有一個originalText
變量。 如果成功轉換為double,則將原始文本設置為文本。
try {
Convert.ToDouble(textbox1.Text);
} catch (NumberFormatException) {
textbox1.Text = originalText;
return;
}
originalText = textbox1.Text;
現在它應該可以工作了!
一旦您開始在 TextBox 中書寫, KeyDown
和Text Changed
事件就會觸發。 在這種情況下,您甚至不會看到您輸入的文本,因為只要文本框內的文本發生更改,相應的操作就會發生。
最好使用LostFocus
事件,因為它只會在用戶離開該文本框時觸發,然后您可以突出顯示它並將文本替換為 0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.