无法在我的用户控件中找到GotFocus()/ LostFocus()

Jon*_*ood 4 c# user-controls winforms

我已经创建了一个WinForms用户控件.我看过一些东西的地方约GotFocus()LostFocus()事件,但我的用户控件不提供在属性窗口的活动部分这些事件.

我甚至尝试打字override,看看这些事件处理程序是否会出现,但他们没有.我无法在任何地方找到它们.

所以我使用这些名称创建了自己的方法,然后我收到以下错误:

警告1'myspacespace.mycontrol.GotFocus()'隐藏继承的成员'System.Windows.Forms.Control.GotFocus'.如果要隐藏,请使用new关键字.

到底发生了什么事.如果GotFocus()已经存在,为什么我找不到并使用它?

Mar*_*all 9

MSDN文档看起来它们是继承自Control,但不鼓励使用它们.他们希望您使用Enter和Leave事件.

注意GotFocus和LostFocus事件是与WM_KILLFOCUS和WM_SETFOCUS Windows消息关联的低级别焦点事件.通常,GotFocus和LostFocus事件仅在更新UICues或编写自定义控件时使用.相反,Enter和Leave事件应该用于除Form类之外的所有控件,该类使用Activated和Deactivate事件.

也就是说,你可以通过+ =建议用户1718294建议访问它们,或者你可以覆盖OnGotFocusOnLostFocus事件.

protected override void OnLostFocus(EventArgs e)
{
    base.OnLostFocus(e);
}

protected override void OnGotFocus(EventArgs e)
{
    base.OnGotFocus(e);
}
Run Code Online (Sandbox Code Playgroud)

  • 根据Microsoft*OnGotFocus方法还允许派生类在不附加委托的情况下处理事件.这是在派生类中处理事件的首选技术.*所以我会说是的. (2认同)