2012-04-20 46 views
0

我有一個Windows窗體應用程序,我希望能夠在用戶執行特定操作時顯示「便籤」類型的東西。C#:在父控制中臨時捕獲OnClick事件

例如:用戶做了一些自動隱藏控件。

我的應用程序應該: o彈出一個註釋,說明發生了什麼。 o當用戶點擊表單上的任何位置時,再次隱藏帖子。

我已經實現了它的註釋作爲一個簡單的面板,其中有一個標籤,它顯示並隱藏了特定事情發生的時間。

但是,我似乎無法捕獲父UserControl的OnClick事件。父控件是嵌套控件,包含一個拆分容器,其中一側包含面板和一個選項卡控件,每個控件都包含一個用戶控件,其中包含各種內容。

除了處理每個單個子控件的click事件,任何人都可以想到一個事件,我可以在父控件上捕獲這個事件,當用戶在父控件中的任何位置單擊時,我可以使用它來隱藏該事件。

感謝, 裏克

+0

表單的mousedown不夠嗎? – BugFinder 2012-04-20 09:50:58

+0

在這種簡單的情況下,爲什麼不使用Windows.Forms.Timer? 5秒後(或可配置的值),彈出窗口將在Tick事件中關閉 – Steve 2012-04-20 10:03:42

回答

5

這就是Capture屬性設計的目的。當你彈出註釋時,將其設置爲true。即使鼠標移動到窗口外,任何鼠標事件現在都會被引導到您的控件。例如,這也是組合框下拉列表工作的方式。請記住,它只適用於一次點擊。

如果彈出窗口包含任何控件本身,那麼鼠標捕捉不是解決方案。使其成爲一個擁有的窗體,只需在Deactivate事件的事件處理程序中調用Close()即可。

-1

有一個在Windows窗體事件bubling,當你點擊的孩子的事件,該事件引發了孩子,然後父。除非你指定「handleEvnet」屬性爲true。所以只要保持假,直到事件到達父母。

+0

[Windows窗體'Control.Click'](https://msdn.microsoft.com/en-us/library/system.windows。 forms.control.click%28v = vs.100%29.aspx)event只提供['EventArgs'類的實例](https://msdn.microsoft.com/zh-cn/library/system.eventargs% 28v = vs.100%29.aspx),它沒有像HandleEvent或Handled這樣的屬性。 – 2015-09-12 22:08:27

相關問題