使用者控制項中多控制項自定義單擊事件

2022-03-10 18:52:29 字數 891 閱讀 7746

這個題目聽上去有點繞,不知道該如何描述。如下圖,根據需求自定義了乙個使用者控制項(usercontrol),除了使用者控制項本身外,上面還有乙個標籤控制項(labelcontrol)和控制項(pictureedit)。

它們三者各自有乙個單擊事件(click),現使用者控制項的單擊click事件只能在"非控制項區"觸發有效,顯示我們需要在使用者控制項所有位置單擊都觸發單擊事件。

最容易想到的方法是讓使用者控制項的上所有控制項都去註冊同乙個單擊事件,這是最簡單的方法也是"笨"的方法。正確的方式是在使用者控制項自定義乙個事件來實現。

首先,在使用者控制項內定義乙個使用者控制項事件(buttonclick),方便使用者呼叫實現:

public event eventhandler buttonclick;
再在使用者控制項的建構函式中實現三個事件,並繫結到同一事件中:

this.click += bigbutton_click;

this.pictureedit1.click += bigbutton_click;

this.labelcontrol1.click += bigbutton_click;

bigbutton_click中觸發它的click事件:

private void bigbutton_click(object sender, eventargs e)

最後使用者在使用使用者控制項時,註冊並實現使用者控制項的buttonclick事件,用buttonclick事件完成原來click事件的任務即可。

給自定義控制項新增單擊和雙擊事件

using system using system.collections.generic using system.linq using system.net using system.windows using system.windows.controls using system.windo...

自定義控制項VS使用者控制項

winform中,使用者控制項 user control 繼承自 usercontrol,主要用於開發 container 控制項,container控制項可以新增其他controls控制項 自定義控制項 custom control 繼承自 control,主要用於開發windows控制項的最基本...

自定義使用者控制項

和做乙個web 窗體一樣,只是,如果引用其中的控制項的方法是如何?以下示例是asp.net 1.1裡的,2.0是怎麼引用,還沒有看書呢 string getddlyear,getddllc,getddladd,getddlpeopso getddlyear class ddlyear this.fi...