簡體   English   中英

在 C# 中的文本框中只允許十進制數字

[英]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 中書寫, KeyDownText Changed事件就會觸發。 在這種情況下,您甚至不會看到您輸入的文本,因為只要文本框內的文本發生更改,相應的操作就會發生。

最好使用LostFocus事件,因為它只會在用戶離開該文本框時觸發,然后您可以突出顯示它並將文本替換為 0。

暫無
暫無

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

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