当操作.NET窗口窗体上的控件时,以下哪个是最佳实践,为什么?
//Hide control from user and stop control form being useable
oControl.Enabled = false;
oControl.Visible = false;或
//Hide control from user and stop control form being useable
oControl.Visible = false;我一直在使用第一种情况,在隐藏控件时总是禁用它,但是有人告诉我,这是错误的,我只应该隐藏它。我似乎隐约记得在某个地方读到,如果您不明确地取消一个控件,它可以继续与用户交互。
任何开悟都会被接受。
发布于 2009-07-13 08:55:01
Enabled指的是用户是否可以与控件交互(即控件是否为灰色)。
Visible指的是是否显示控件(通常,如果这是假的,则控件根本不会呈现,但是显然不是所有的时间--请参阅本文的注释)。
如果未呈现控件,则启用的属性的值将不会产生任何影响。
发布于 2009-07-13 10:32:34
隐藏控件时是否需要设置Enabled = false取决于所讨论的控件,以及它提供的交互类型。对于许多控件(如Button或CheckBox),设置Visible = false就足以防止用户与控件之间的任何交互。
但是一些控件(尤其是那些提供快捷密钥属性的控件),在不可见的情况下仍然会提供用户交互。例如,当按下快捷键时,ToolStripMenuItem (和“旧的”MenuItem)仍然会调用它们的Click事件,而不管Visible是true还是false。
在这种情况下,设置Enabled = false将防止通过快捷键调用Click事件。从这个角度来看,我不建议在Enabled = false应用程序中隐藏控件时设置WinForms。
发布于 2009-07-13 08:56:35
来自MSDN
不可见的元素不参与输入事件(或命令),不影响度量或布局传递,不按制表符顺序排列,也不会在命中测试中报告。
因此,我认为您可以假设设置.Enabled = false是不必要的。
更新
我已经检查了.Visibity 关于MSDN的文档,但不幸的是,它没有说明控件是否禁用。
https://stackoverflow.com/questions/1118345
复制相似问题