我有一个文本框,我试图通过两种方式进行限制:
1 - 我只想允许数值,没有小数
2 - 我只想接受 <= 35 的数字
我有以下事件来处理这个:
private void TextBoxWorkflowCountPreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (!IsNumeric(e.Text, NumberStyles.Integer)) e.Handled = true;
}
public bool IsNumeric(string val, NumberStyles numberStyle)
{
double result;
return double.TryParse(val, numberStyle, CultureInfo.CurrentCulture, out result);
}
private void TextBoxWorkflowCountTextChanged(object sender, TextChangedEventArgs e)
{
if (!string.IsNullOrEmpty(textBoxWorkflowCount.Text) && Convert.ToInt32(textBoxWorkflowCount.Text) <= 35) e.Handled = true;
else
{
MessageBox.Show("Must not be higher then 35");
textBoxWorkflowCount.Text = "35";
}
}
这在表面上工作得很好 -除非用户将数据粘贴到文本框(似乎不可避免)或更奇怪的是 - 如果用户输入一个数字然后点击退格键(使文本框再次空白)消息框让用户知道它们的值 > 35 出现(即使绝对不是这种情况)。如果必须,我可以忍受的第一个问题 - 但第二个问题是游戏中断,在尝试解决它 30 分钟后,我无处可去。帮助!