[英]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.