在我的应用程序中,我想在某些情况下处理 TextBox
输入(例如,某些条件未填写)并且因为 KeyDown
仅对键盘输入有用,而不能从剪贴板实际粘贴(我不想通过无论如何,使用 Win32 调用这样做的麻烦),我想我只需处理我的主要 TextBox 的 TextChanged
事件中的所有内容。但是,当出现“错误”并且用户无法输入时,如果我要对其调用 TextBox.Clear();
,TextChanged 会第二次触发,这是可以理解的,因此消息也会显示两次。这有点烦人。我只能在这种情况下处理 TextChanged 的任何方式?示例代码(在 txtMyText_TextChanged
内):
if (txtMyOtherText.Text == string.Empty)
{
MessageBox.Show("The other text field should not be empty.");
txtMyText.Clear(); // This fires the TextChanged event a second time, which I don't want.
return;
}
最佳答案
在更改之前断开事件处理程序并在之后重新连接怎么办?
if (txtMyOtherText.Text == string.Empty)
{
MessageBox.Show("The other text field should not be empty.");
txtMyText.TextChanged -= textMyText_TextChanged;
txtMyText.Clear();
txtMyText.TextChanged += textMyText_TextChanged;
return;
}
在更复杂的情况下,最好在 finally 部分尝试/finally 并重新启用 TextChanged 事件
关于c# - 有没有办法在不触发 TextChanged 的情况下清除 TextBox 的文本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21205491/