手动在控件上引发LostFocus事件

时间:2008-11-13 17:52:49

标签: c# .net

我在表单上有一堆控件(文本框和组合框),其中包含toolstripcontainer和toolstripbuttons,用于保存,取消等编辑。我们正在使用.Net 3.5 SP1
  在control.lostfocus和control.leave事件中编写了一堆逻辑。单击工具条按钮时不会调用这些事件。有没有办法在按下任何按钮时手动调用这些事件。

感谢。
基肖尔马布

[编辑]

这就是我解决问题的方法。感谢 Chris Marasti-Georg 指针。在按钮单击事件中,我将焦点放在工具条而不是按钮上,因为toolstrip按钮没有焦点事件。我们可以使用

访问放置按钮的工具条

((ToolStripButton)发送方).Owner.Focus()

-Kishore

3 个答案:

答案 0 :(得分:4)

你可以听按钮上的点击事件,并在处理程序中调用他们的焦点方法。这将(希望)导致先前集中的控制正确响应。将以下处理程序添加到每个按钮的单击事件:

private void ButtonClick(object sender, EventArgs e) {
    if(sender != null) {
        sender.Focus();
    }
}

答案 1 :(得分:1)

您可以扩展这些控件,然后调用基类的OnLostFocus和OnLeave受保护的方法......

答案 2 :(得分:1)

我建议将登录名移到事件处理程序之外的方法并调用该方法......