【问题标题】:Winforms button: Does Visible = false imply Enabled = false?Winforms 按钮:Visible = false 是否意味着 Enabled = false?
【发布时间】:2010-11-28 12:11:30
【问题描述】:

简单的问题:我有一个 WinForms 按钮,我想让它(有条件地)不可见和禁用(以确保如果有人点击不可见按钮所在的空间,它不会激活它。) button.Visible = false 是否也暗示 button.Enabled = false,还是我需要在适当的时候设置/重置这两个属性?

【问题讨论】:

  • 我知道,没有愚蠢/懒惰的问题,但说真的,你为什么不尝试一下? ://
  • 如果仍然隐藏它,为什么需要禁用该按钮?只需禁用底层功能(通过测试一些标志,或者您知道应该禁用该按钮)。这样,即使某些愚蠢的用户使用工具重新显示您的按钮或向不可见但已启用的按钮发送一些窗口消息,您的应用程序也不会做它不应该做的事情。换句话说,如果您想禁用功能,请禁用该功能,而不仅仅是它的前门。

标签: winforms button


【解决方案1】:

如果控件不可见,则它实际上被禁用。在它可见的区域中单击(或滚入和滚出该区域)不会导致事件触发。

编辑:澄清一下,根据其他响应和 cmets,按钮未被禁用,并且底层事件功能仍然可用以编程方式,但按钮不会物理上在表单上可用/可见,并且用户将无法以任何方式与其交互(除非您作为程序员以编程方式提供另一种方法)。

【讨论】:

  • 除了鼠标点击(如键盘)之外,还有其他方法可以激活按钮。我读到他的问题是询问是否有任何方法可以按下按钮,而不仅仅是通过鼠标访问。
  • @recursive:虽然您的观点是有效的,但我希望控件在隐藏时会失去焦点,并且无法再次获得焦点。但这可能不是真的,我不确定助记符会发生什么。但即便如此,也有一些方法可以在没有鼠标或键盘的情况下按下按钮。想到 UI 自动化。
【解决方案2】:

将 Visible 设置为 false 不会更改 Enabled 属性。但是,将该属性设置为 false 确实会使控件实际上不存在。如果单击不可见按钮留下的空白区域,则不会触发该按钮的单击事件。

【讨论】:

  • 谢谢,乔尔。这基本上就是我所需要的。我只需要确保用户无法点击它。
【解决方案3】:

我认为这并不意味着它已被禁用。这只是意味着控件在表单上不可见,因此无法对其执行操作。如果您将 visible 属性设置为 false,然后通过它处理的代码调用 Click 事件。但是,如果您将 Enabled 属性设置为 False,我想它不会

【讨论】:

    【解决方案4】:

    很确定如果 .Visible = false,“_Click”操作被禁用。例如,如果您在代码中使用 .PerformClick() 并且 .Visible = true,_Click 将执行。如果为 false,_Click 将不会执行。

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      • 2018-07-12
      • 1970-01-01
      • 2015-08-03
      • 2020-12-16
      相关资源
      最近更新 更多