我有一个可以产生几个非模态子窗体的窗体上的用户控件。孩子形成用户可以编辑的显示数据。用户控件显示相同数据的不同视图,并且如果用户在一个或多个子窗体中进行了更改,我希望能够重新生成数据的重新加载。我已经设置了一些事件来通知用户对子表单中数据更改的控制,但我无法确定应该在用户控件上捕获哪些事件(如果存在),以确定它是否已从儿童表格。我可以在这里使用现有的活动吗?用户控件获得焦点时发现的事件?
编辑:代码示例 (对不起,我的客户喜欢VB)
的GotFocus似乎只在用户控件设置为触发。
我的控制面板添加“主”形式是这样的:
Dim mainControl as New MainUserControl()
Panel1.Controls.Add(mainControl)
mainControl.Doc = DocStyle.Fill
mainControl.Visible = True
mainControl.Show()
然后,事件处理程序代码:
Private Sub MainUserControl_GotFocus(ByVal sender as Object, ByVal e as EventArgs) Handles Me.GotFocus
MessageBox.Show("got focus")
End Sub
然后,有一个“关闭”按钮用户控件将事件触发回主窗体,然后将该用户控件从面板中移除并进行处理。只有当mainControl.Dispose()
被叫GotFocus
火。
EDIT 2
我只是想处理Enter
事件,但只有触发第一次,而不是每一个控件接收焦点时。
我为此添加了一个处理程序,当它在控件和子窗体之间来回切换时,它不会触发。我需要做什么才能让GotFocus开火? – 2011-05-12 16:26:54
请参阅此处:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.gotfocus.aspx中的示例。随意发布代码它仍然不会触发。 – soandos 2011-05-12 16:29:19
GotFocus仅在用户控件处理时触发。查看原始帖子中的代码示例。谢谢! – 2011-05-12 17:07:43