gpt4 book ai didi

c# - 有没有办法在不触发 TextChanged 的​​情况下清除 TextBox 的文本?

转载 作者:行者123 更新时间:2023-11-30 14:31:07 26 4
gpt4 key购买 nike

在我的应用程序中,我想在某些情况下处理 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com