防止vb.net中的控制禁用

时间:2013-05-27 15:35:19

标签: vb.net controls

有没有办法让控件始终启用,这样如果你设置Enabled = False它没有效果? 我试图以这种方式向EnabledChange事件添加一个处理程序:

AddHandler mybutton.EnabledChange, Sub() 
                                         mybutton.EnabledChange = True
                                   End Sub

但它在很多情况下会导致stackoverflow异常,例如当您尝试禁用包含该按钮的控件时。那还有另一种方法吗?

3 个答案:

答案 0 :(得分:1)

尝试改变这样......这对我有用

Private Sub myButton_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles myButton.EnabledChanged
        If Not myButton.Enabled Then myButton.Enabled = True
    End Sub

答案 1 :(得分:0)

不在任何良好的编码习惯范围内

  • 如果您将其更改为enabled = false,则会更改该事件的属性设置。

什么是代码问题,会有解决方案吗?

在控件的属性中,enabled = true。您不需要为其编写代码。它在表单设计中。

回应你的评论:

你可以使用matzone选择的补丁。个人而言,我赞成从循环中删除那个特定的控件,我在vb.net中遇到了嵌套和无限循环的问题...我只是喜欢在我的程序中,减少不必要的更改,只是帮助防止错误。这意味着你必须经历并确保代码重新启用控件总是被调用,只要它在循环中被更改..如果你问我我会要求错误..在短期内可能会有更多的工作,但最好先选择控件。我遇到了类似的困境。

请参阅MSDN链接

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.enabled.aspx

答案 2 :(得分:0)

这对我有用

Protected Overridable Sub cmdCancel_EnabledChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdCancel.EnabledChanged

    If DirectCast(eventSender, TPDotnet.GUIControls.WinButtonEx).Enabled = False Then
        cmdCancel.Enabled = True
    End If

End Sub

条件处理正确。