Control.Select()和Control.Focus()之间有什么区别?

Nei*_*ell 48 .net user-interface behavior winforms

在WinForms中,为了将焦点设置为特定的控件,我似乎总是在调用Control.Select() Control.Focus()使其工作.

有什么区别,这是正确的方法吗?

小智 38

Focus()是实际设置焦点的低级功能.

Select()是一种高级方法.它首先在控件的父层次结构中以迭代方式向上查找,直到找到容器控件.然后它设置该容器的ActiveControl属性(到被调用的控件).但是,这些方法中的逻辑并不简单,并且对UserControl容器有特殊处理.


Dan*_*ite 24

Focus是一种低级方法,主要用于自定义控件作者.相反,应用程序员应该对子控件使用Select方法或ActiveControl属性,或者对表单使用Activate方法.

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

  • 我不认为这是一个足够好的答案.我读了那个并明白了.我写了一个自定义控件.但是,我不知道在我的自定义控件中何时使用Select vs Focus是合适的.它总是一件事吗?有一些标准吗?一个与另一个的含义是什么,包括实际和语义? (17认同)
  • 我怀疑在向Google输入此问题之前,大多数人都会阅读MSDN.简单地在这里重复verbatum并不是很有帮助. (5认同)

Kyl*_*ton 6

有关它们有何不同的示例,如果您尝试将Forms App的控件设置为默认焦点,则该控件在打开时将默认焦点放在打开时,在InitializeComponent()之后在构造函数中调用时,只有Select()将起作用。Focus()不会。