2008-11-13 65 views
1

我在窗体上有一堆控件(文本框和组合框),其中tooltripcontainer和tooltripbuttons用于保存,取消编辑等。我们正在使用.Net 3.5 SP1
有很多用control.lostfocus和control.leave事件写的逻辑。单击工具栏按钮时不会调用这些事件。有没有办法在按下这些按钮的任何一个时手动调用这些事件。手动在控件上提升LostFocus事件

谢谢。

[编辑]

这是我如何解决了这个问题。谢谢Chris Marasti-Georg为指针。由于tooltripbutton没有焦点事件,因此在按钮点击事件时,我将焦点放在tooltrip而不是按钮上。我们可以访问该按钮,使用

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

-Kishore

+0

很高兴提供帮助。配置器提供了一个很好的观点 - 将LostFocus/Leave逻辑移动到其他更可见的方法可能是一个好主意,因此它们可以由点击处理程序调用。只是一个想法。 – 2008-11-14 15:06:26

回答

4

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

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

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

1

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