Windows Forms设置按钮Enable属性不生效该如何解决?
问题原因
你当前把判断逻辑写在了Form1_Activated事件中,这个事件仅会在窗体首次激活、或者用户从其他应用/窗口切回当前窗体时触发一次,你在文本框内输入/修改内容的过程中,该事件不会被触发,因此判断逻辑不会执行,自然看不到预期效果。
解决方法
你需要监听文本框的TextChanged事件,该事件会在文本框内容每次发生变更时触发,刚好满足你实时校验的需求。同时建议补充内容为空时禁用按钮的逻辑,避免按钮启用后无法恢复禁用状态。
操作步骤:
- 如果你使用Visual Studio设计器,直接双击对应的文本框控件,会自动生成
TextChanged事件的绑定和方法框架 - 在生成的方法中填入如下逻辑即可:
private void firstDisplayTxtBox_TextChanged(object sender, EventArgs e) { // 文本长度大于0时启用按钮,否则禁用 plusButton.Enabled = firstDisplayTxtBox.TextLength > 0; }
如果需要窗体刚加载完成时就做一次初始状态校验,可以把上述判断逻辑同时在Form_Load或者你原本的Form_Activated事件中调用一次即可。
内容的提问来源于stack exchange,提问作者Or Shani
相关产品推荐
相关产品推荐

