簡體   English   中英

C# WPF - 僅處理程序檢查數字的動態文本框

[英]C# WPF - Dynamic textbox with handler checking numbers only

我試圖將動態文本框創建與檢查用戶是否只鍵入數字相結合,但它一直失敗。 我有一個堆棧面板 splMain,在運行時將文本框添加到其中。

public void btnAddMore_Click(object sender, RoutedEventArgs e)
{
    TextBox x = new TextBox();
    x.Name = "new_textbox";
    x.AcceptsReturn = true;
    x.AddHandler(TextBox.PreviewKeyDownEvent, new KeyEventHandler(PreviewkeyDown));
    splMain.Children.Add(x);
}

private void PreviewkeyDown(object sender, KeyEventArgs e)
{
    Regex regex = new Regex("[^0-9]+");
    e.Handled = regex.IsMatch(e.);
}

另一個想法:

public void btnAddMore_Click(object sender, RoutedEventArgs e)
{
    TextBox tb = new TextBox();
    tb.KeyDown += new KeyEventHandler(NumericOnly);
    splMain.Children.Add(tb);
}

private void NumericOnly(System.Object sender, System.Windows.Input.TextCompositionEventArgs e)
{
    e.Handled = IsTextNumeric(e.Text);
}

private static bool IsTextNumeric(string str)
{
    System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("[^0-9]");
    return reg.IsMatch(str);
}

它為 WPF,實際上只允許插入小數或雙精度。 以前有沒有人這樣做過或有什么絕妙的主意?

我改為這樣做,允許用戶添加動態文本框來檢查用戶是否只輸入數字。

    public void btnAddMore_Click(object sender, RoutedEventArgs e)
    {
        TextBox x = new TextBox();
        x.Name = "new_textbox"; //Natural Number and pos int
        x.AcceptsReturn = true;
        x.AddHandler(TextBox.PreviewTextInputEvent, new TextCompositionEventHandler(PreviewkeyDown));
        splMain.Children.Add(x);
    }

    private void PreviewkeyDown(object sender, TextCompositionEventArgs e)
    {
        Regex regex = new Regex("[^0-9]+");
       e.Handled = regex.IsMatch(e.Text);
        if (regex.IsMatch(e.Text) == false)
        {
           return;
        }
        else
        {
            MessageBox.Show("Numbers Only Please");
        }
    }

暫無
暫無

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

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