C# winforms中的这个.ActiveControl=XControl,XControl.Focus()之间有什么不同?
我在一个C#Winform项目上工作 我不知道他们之间有什么不同C# winforms中的这个.ActiveControl=XControl,XControl.Focus()之间有什么不同?,c#,winforms,C#,Winforms,我在一个C#Winform项目上工作 我不知道他们之间有什么不同 this.ActiveControl=XControl XControl.Focus() 有时XControl.Focus()不起作用,我必须设置this.ActiveControl=XControl。我不知道为什么会这样。我很困惑,有人能帮我吗?很清楚这一点: Focus是一种低级方法,主要用于自定义控件作者。相反,应用程序程序员应该为子控件使用方法或属性,或为窗体使用方法 因此,听起来您应该设置ActiveControl属性。
this.ActiveControl=XControl代码>
XControl.Focus()代码>
XControl.Focus()
不起作用,我必须设置this.ActiveControl=XControl
。我不知道为什么会这样。我很困惑,有人能帮我吗?很清楚这一点:
Focus是一种低级方法,主要用于自定义控件作者。相反,应用程序程序员应该为子控件使用方法或属性,或为窗体使用方法
因此,听起来您应该设置ActiveControl
属性。它可能在做一些Focus
没有做的额外事情
你可以查一查到底是什么,但这对我来说似乎是浪费时间。遵循记录的行为总是比依赖于实现细节更好
仅凭文档中的信息和我对Windows编程的了解,我就可以很好地猜测Focus
方法只是调用Win32,然而,ActiveControl
属性可能有一些额外的逻辑来处理直接调用SetFocus
无法工作的情况
例如,SetFocus
的链接文档非常明确地说明了一个事实,即设置焦点的窗口必须附加到调用线程的消息队列。ActiveControl
属性可以解决这个问题。或者,它可能有处理嵌套控件的代码