歡迎使用CSDN markdown編輯器

2021-08-02 06:38:45 字數 4413 閱讀 7492

** :

為c#自定義控制項新增自定義事件

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

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

步驟一:新建乙個使用者控制項,放兩個按鈕,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:

c# 自定義控制項如何在屬性欄新增自定義事件?可以雙擊生成+=**?

使用者控制項的實現比較簡單,直接從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;

private system.componentmodel.container components = null;

public string customvalue

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;

public form1()

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 ( )

歡迎使用CSDN markdow

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...

歡迎毛毛與妞妞使用CSDN markdown編輯器

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

歡迎使用CSDN markdow1n編輯器

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...