我有一個可以產生幾個非模態子窗體的窗體上的用戶控件。孩子形成用戶可以編輯的顯示數據。用戶控件顯示相同數據的不同視圖,並且如果用戶在一個或多個子窗體中進行了更改,我希望能夠重新生成數據的重新加載。我已經設置了一些事件來通知用戶對子表單中數據更改的控制,但我無法確定應該在用戶控件上捕獲哪些事件(如果存在),以確定它是否已從兒童表格。我可以在這裏使用現有的活動嗎?用戶控件獲得焦點時發現的事件?
編輯:代碼示例 (對不起,我的客戶喜歡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