首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是禁用控件、隐藏控件还是只是隐藏控件?

是禁用控件、隐藏控件还是只是隐藏控件?
EN

Stack Overflow用户
提问于 2009-07-13 08:49:19
回答 7查看 7.6K关注 0票数 11

当操作.NET窗口窗体上的控件时,以下哪个是最佳实践,为什么?

代码语言:javascript
复制
//Hide control from user and stop control form being useable
oControl.Enabled = false;
oControl.Visible = false;

代码语言:javascript
复制
//Hide control from user and stop control form being useable
oControl.Visible = false;

我一直在使用第一种情况,在隐藏控件时总是禁用它,但是有人告诉我,这是错误的,我只应该隐藏它。我似乎隐约记得在某个地方读到,如果您不明确地取消一个控件,它可以继续与用户交互。

任何开悟都会被接受。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-07-13 08:55:01

Enabled指的是用户是否可以与控件交互(即控件是否为灰色)。

Visible指的是是否显示控件(通常,如果这是假的,则控件根本不会呈现,但是显然不是所有的时间--请参阅本文的注释)。

如果未呈现控件,则启用的属性的值将不会产生任何影响。

票数 9
EN

Stack Overflow用户

发布于 2009-07-13 10:32:34

隐藏控件时是否需要设置Enabled = false取决于所讨论的控件,以及它提供的交互类型。对于许多控件(如ButtonCheckBox),设置Visible = false就足以防止用户与控件之间的任何交互。

但是一些控件(尤其是那些提供快捷密钥属性的控件),在不可见的情况下仍然会提供用户交互。例如,当按下快捷键时,ToolStripMenuItem (和“旧的”MenuItem)仍然会调用它们的Click事件,而不管Visibletrue还是false

在这种情况下,设置Enabled = false将防止通过快捷键调用Click事件。从这个角度来看,我不建议在Enabled = false应用程序中隐藏控件时设置WinForms。

票数 10
EN

Stack Overflow用户

发布于 2009-07-13 08:56:35

来自MSDN

不可见的元素不参与输入事件(或命令),不影响度量或布局传递,不按制表符顺序排列,也不会在命中测试中报告。

因此,我认为您可以假设设置.Enabled = false是不必要的。

更新

我已经检查了.Visibity 关于MSDN的文档,但不幸的是,它没有说明控件是否禁用。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1118345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档