输入TextBox时TextChanged事件多次触发

i_shrine 2017-08-30 11:31:08
小弟做了个WPF程序,现在上面有一个TextBox和一个RadioButton,我想实现的功能时,当TextBox有输入值且输入值小于10时,禁用RadioButton。

但是我发现在输入15时,RadioButton仍然被禁用了,也就是我输入15的第一个字符“1”时,就发生了TextChanged事件自动触发禁用RadioButton功能,当输入完整的字符15后,由于RadioButton已经被禁用,所以虽然TextChange的判断条件没有被满足,但是仍然触发了TextChanged事件。

请问怎么修改代码?谢谢!




private void textBox_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox tb = (TextBox)sender;

if (string.IsNullOrWhiteSpace(textBox.Text) == false && float.Parse(textBox.Text) <= 10)
{
radioButton.IsEnabled = false;
}
}
...全文
2236 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 6 楼 i_shrine 的回复:
[quote=引用 5 楼 duanzi_peng 的回复:] 当输入完整的字符15后, -》放到KeyUp事件里处理,这时获取textbox的Text 进行判断处理。
KeyUp事件是不是要输入15后键入回车键才会触发事件?[/quote] 输入就会触发,和textchanged一个道理,“回车”之后获取完整Text 是最好的判断,因为不需要输入”逐个“字符就进行判断。
i_shrine 2017-08-30
  • 打赏
  • 举报
回复
引用 5 楼 duanzi_peng 的回复:
当输入完整的字符15后, -》放到KeyUp事件里处理,这时获取textbox的Text 进行判断处理。
KeyUp事件是不是要输入15后键入回车键才会触发事件?
  • 打赏
  • 举报
回复
当输入完整的字符15后, -》放到KeyUp事件里处理,这时获取textbox的Text 进行判断处理。
键盘敲出字 2017-08-30
  • 打赏
  • 举报
回复
这不是很简单的逻辑码?
private void textBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            TextBox tb = (TextBox)sender;//野生代码??

            if (string.IsNullOrWhiteSpace(textBox.Text) == false && float.Parse(textBox.Text) <= 10)//输入非数字会抛异常
            {
                radioButton.IsEnabled = false;
            }
            else
            {
                radioButton.IsEnabled = true;
            }
        }
易2017 2017-08-30
  • 打赏
  • 举报
回复
   if(textBox1.Text.Length>1)
            {
                //触发事件
            }
易2017 2017-08-30
  • 打赏
  • 举报
回复
设置字符长度卡关,当字符长度大于等于2时触发事件
小恒丶 2017-08-30
  • 打赏
  • 举报
回复
大于10启用不就行了。 你这样输入不是数字的会挂掉的。

111,082

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧