当文本框中的文本不再是C#窗体中的正确格式时,禁用“确定”按钮
本文关键字:文本 禁用 按钮 格式 确定 不再 窗体 | 更新日期: 2023-09-27 18:20:55
这看起来应该很容易解决,但我的脑袋被炸了,我想不出一个好方法来解决这个问题!基本上,我有一个表格,上面有详细信息。用户可以点击一个按钮来选择一个新的PIN号码。在这个表单上,我有一些Regex来确保在文本框中输入的值是一个数字,并且大于4位数。
代码:
this.buttonOK.Enabled = false;
this.textBoxPin.TextChanged += delegate(object sender, EventArgs e)
{
String pattern = @"[0-9]{4,}";
Regex regex = new Regex(pattern);
if (regex.IsMatch(textBoxPin.Text))
{
buttonOK.Enabled = true;
}
};
现在,如果PIN超过4位,OK将被启用,但如果您使用退格键并最终没有数字,那也没关系——OK仍然从以前启用。有什么办法可以让我重新禁用这个按钮吗?
目前,当点击OK时,我有一个事件,它小于4,它会弹出一条警告消息,如代码所示:
private void buttonOK_Click(object sender, EventArgs e)
{
if (textBoxPin.Text.Length < 4)
{
DialogResult dr = MessageBox.Show("PIN must be at least 4 digits!", "Important Message", MessageBoxButtons.RetryCancel, MessageBoxIcon.Exclamation);
if (dr == DialogResult.Cancel)
{
}
else if (dr == DialogResult.Retry)
{
}
}
}
但通过这种方式,我不知道如何恢复更改,因为在我需要的更大的项目中有很多不同的东西在交互(基本上,如果取消了,我不想保存更改等)。这就是为什么我认为如果按钮不再正确,我可以重新禁用它会更容易。有办法做到这一点吗?
此外,如果我按退格键,我也可以输入字母,这是不允许的。我试着摆弄Keypresses,但我认为regex会更整洁。
如有任何建议,我们将不胜感激!
if (regex.IsMatch(textBoxPin.Text))
{
buttonOK.Enabled = true;
}
else
{
buttonOK.Enabled = false;
}
这样不行吗?
缩短:
buttonOk.Enabled = regex.IsMatch(textBoxPin.Text)
你尝试过吗:
this.textBoxPin.TextChanged += delegate(object sender, EventArgs e)
{
String pattern = @"[0-9]{4,}";
Regex regex = new Regex(pattern);
if (regex.IsMatch(textBoxPin.Text))
{
buttonOK.Enabled = true;
}
else
{
buttonOK.Enabled = false;
}
};