簡體   English   中英

用於檢查C#中的數字的TextBox方法

[英]TextBox method for checking numerics in C#

我正在創建一個有很多用戶輸入的程序。 大多數用戶輸入將在TextBox中,只需要數字條目。

目前,我只是使用TextChanged方法獲取值,然后根據條目使其他按鈕/復選框顯示/隱藏。

我想創建一個方法或實現某種利用率,檢查何時輸入框,防止人們輸入錯誤,修復他們所做的更改,或創建一個消息框,告訴他們他們的輸入無效。

我目前有兩種方式,但他們不相互合作。

我有一個解析方法,將輸入文本轉換為Double但我遇到的問題,如果他們使用退格按鈕然后重新輸入他們的數字,它將無法識別輸入(這是打開/關閉其他所需的文本框/復選框)。 這適用於TextChanged方法。

我有一個使用PreviewTextInput和KeyDown方法的正則表達式集。 這非常適用於不允許某些輸入,但它不適用於textchanged方法(或者至少我不明白如何指向它)。

我需要一些指導如何創建一個可行的方法來檢查文本框中的輸入,這不需要我的用戶按下每個條目的按鈕(也就是檢查實時)。

我想這就是你要找的東西。
Binding.Validation

對於Int來說,它就像綁定到Int一樣簡單。

如果您需要能夠通過按鈕增加/減少值,請使用NumericUpDown或其子類之一。

如果您只需要一個文本框,則必須處理PreviewKeyDown()事件。 您需要手動檢查按下的有效/無效鍵。 按下無效鍵時,設置e.Handled = true; 防止關鍵事件發生隧道效應。

我真的無法完全理解,但據我說,你試圖阻止文本框采取無效輸入,同時你想使用TextChanged方法,所以你可以這樣做:

<TextBox Name="txtAddNumber" TextChanged="txtAddLable_TextChanged" PreviewTextInput="txtAddNumber_PreviewTextInput" />

和txtAddNumber_PreviewTextInput方法:

private void txtAddNumber_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    char c = Convert.ToChar(e.Text);
    if (!Char.IsLetter(c))
        e.Handled = false;
    else
        e.Handled = true;
    base.OnPreviewTextInput(e);
}

如果你想在輸入的基礎上處理一些錯誤消息,你可以這樣做:

private void txtAddNumber_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    char c = Convert.ToChar(e.Text);
    if (!Char.IsLetter(c))
    {
        // Put your Logic here according to requirement
        e.Handled = false;
    }
    else
    {
        // Put your Logic here according to requirement
        e.Handled = true;
    }
    base.OnPreviewTextInput(e);
}

e.Handled = false表示輸入為數字, e.Handled = true表示輸入為非數字。

你的txtAddLable_TextChanged方法會像:

private void txtAddLable_TextChanged(object sender, TextChangedEventArgs e)
{
      // Logics here...
}

暫無
暫無

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

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