為C 自定義控制項新增自定義事件

2022-03-12 10:41:58 字數 3938 閱讀 7140

這裡的自定義控制項是由普通控制項組合而成的。

希望事件響應**推遲到使用自定義控制項的窗體裡寫。

步驟一:新建乙個使用者控制項,放兩個按鈕,tag分別是btn1,btn2.

這兩個按鈕的共用單擊事件處理**如下:

using system; using system.collections.generic; using system.componentmodel; using system.drawing; using system.data; using system.linq; using system.text; using system.windows.forms;

namespace ucdll

//定義委託         public delegate void btnclickhandle(object sender, eventargs e);         //定義事件         public event btnclickhandle usercontrolbtnclicked;         private void btn_click(object sender, eventargs e)              } }

步驟二:當使用者拖乙個自定義控制項在窗體的時候,

在事件裡可以找到usercontrolbtnclicked事件。

private void uctest1_usercontrolbtnclicked(object sender, eventargs e)

這個操作很有用。 url:

使用者控制項的實現比較簡單,直接從system.windows.forms.usercontrol繼承。

public class usercontrol1 : system.windows.forms.usercontrol

為了便於測試我在上面新增了乙個textbox,並註冊textbox的textchanged事件,

this.textbox1.textchanged += new system.eventhandler(this.textbox1_textchanged);

事件處理函式,

private void textbox1_textchanged(object sender, system.eventargs e)

messagebox.show(this.textbox1.text);

這裡演示如果控制項中文字框的內容改變就會用messagebox顯示當前的文字框內容。

窗體中新增上面的使用者控制項,當我們改變textbox的文字時,可以看到跳出乙個對話方塊,很簡單吧。

下面來看看對控制項新增屬性。

這裡定義乙個私有變數。

private string customvalue;

新增訪問他的屬性

public string customvalue

set}

在窗體中使用的時候像普通控制項一樣進行訪問,

usercontrol11.customvalue = "使用者控制項自定義資料";

通過事件可以傳遞訊息到窗體上,在定義之前我們先來寫乙個簡單的引數類。

public class textchangeeventargs : eventargs

public string message}}

定義委託為,

public delegate void textboxchangedhandle(object sender,textchangeeventargs e);

接下去在使用者控制項中新增事件,

//定義事件

public event textboxchangedhandle usercontrolvaluechanged;

為了激發使用者控制項的新增事件,修改了一下**,

private void textbox1_textchanged(object sender, system.eventargs e)

好了,為了便於在csdn上回答問題,把完整的**貼了出來:

using system;

using system.collections;

using system.componentmodel;

using system.drawing;

using system.data;

using system.windows.forms;

set}

//定義事件

public event textboxchangedhandle usercontrolvaluechanged;

public usercontrol1()

protected override void dispose( bool disposing )

}base.dispose( disposing );

}#region元件設計器生成的**

private void initializecomponent()

#endregion

private void textbox1_textchanged(object sender, system.eventargs e)

}//定義委託

public delegate void textboxchangedhandle(object sender,textchangeeventargs e);

public class textchangeeventargs : eventargs

public string message}}

}使用時要在窗體中註冊上面的事件,比較簡單都貼源**了,

using system;

using system.drawing;

using system.collections;

using system.componentmodel;

using system.windows.forms;

using system.data;

protected override void dispose( bool disposing )

}base.dispose( disposing );

}#region windows 窗體設計器生成的**

private void initializecomponent()

#endregion

[stathread]

static void main()

private void usercontrol11_usercontrolvaluechanged(object sender, textchangeeventargs e)}}

另外需要動態載入,就把控制項新增在容器的controls集合就行了,下面是在建構函式中新增控制項,

public form1()

另外從vs.net中的工具箱中拖動使用者控制項到窗體上,如果是第一次需要編譯一下專案。

//如果我有乙個寫好的控制項,想在form中使用如何???????

在控制項中:           public delegate void onsubbureauselectchanged();//定義委託         public event onsubbureauselectchanged onsubbureauselectchanged;//定義事件

//以下**放在你要用在窗體中呼叫的事件中,可以是控制項中有的也可以自己寫的

if ( ( subbureaus.count > 0 ) && ( onsubbureauselectchanged != null ) )                 onsubbureauselectchanged ();

//以下寫在窗體構造中

searchpanel.onsubbureauselectchanged += new searchpanel.onsubbureauselectchanged ( onsubbureauselectchanged );

//以下再寫乙個自己寫的事件

private void onsubbureauselectchanged ( )        

為C 自定義控制項新增自定義事件

大氣象 原文 為c 自定義控制項新增自定義事件 這裡的自定義控制項是由普通控制項組合而成的。希望事件響應 推遲到使用自定義控制項的窗體裡寫。步驟一 新建乙個使用者控制項,放兩個按鈕,tag分別是btn1,btn2.這兩個按鈕的共用單擊事件處理 如下 using system using system...

為C 自定義控制項新增自定義事件

大氣象 原文 為c 自定義控制項新增自定義事件 這裡的自定義控制項是由普通控制項組合而成的。希望事件響應 推遲到使用自定義控制項的窗體裡寫。步驟一 新建乙個使用者控制項,放兩個按鈕,tag分別是btn1,btn2.這兩個按鈕的共用單擊事件處理 如下 using system using system...

為C 自定義控制項新增自定義事件

大氣象 原文 為c 自定義控制項新增自定義事件 這裡的自定義控制項是由普通控制項組合而成的。希望事件響應 推遲到使用自定義控制項的窗體裡寫。步驟一 新建乙個使用者控制項,放兩個按鈕,tag分別是btn1,btn2.這兩個按鈕的共用單擊事件處理 如下 using system using system...