0

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

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

但它在很多情况下会导致 stackoverflow 异常,例如当您尝试禁用包含按钮的控件时。那么还有其他方法可以做到这一点吗?

4

3 回答 3

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
于 2013-05-27T16:31:41.250 回答
0

不在良好编码实践的任何领域内

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

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

在控件的属性中,启用 =true。你不需要为它编写代码。它在形式设计中。

回应您的评论:

您可以使用 matzone 选择的补丁.. 就个人而言,我赞成从循环中删除该特定控件,并且我在 vb.net 中遇到了嵌套和无限循环的问题...我只是更喜欢少在我的程序中,不必要的更改只会帮助排除错误。这意味着您必须检查并确保始终调用重新启用控件的代码,无论何时在循环中更改它..如果您问我,请询问错误..短期内可能会做更多的工作,但最好首先选择控件。我也遇到过类似的困境。

请参阅指向 MSDN 的链接

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

于 2013-05-27T15:39:58.660 回答
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

条件处理得当。

于 2016-09-06T09:21:47.247 回答