using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { MyControl test = new MyControl(); test.ButtonClick += TestClick; this.Controls.Add(test); } private void TestClick(object sender, EventArgs e) { MessageBox.Show("Test"); } } public class MyControl : UserControl { private Button btn; private TextBox txtBox; public event ButtonClickEventHandler ButtonClick; public delegate void ButtonClickEventHandler(object sender, EventArgs e); public MyControl() { btn = new Button { Text = "Button", Dock = DockStyle.Top }; txtBox = new TextBox { Text = "TextBox", Dock = DockStyle.Bottom }; this.Controls.Add(btn); this.Controls.Add(txtBox); btn.Click += BtnClick; } public void BtnClick(object sender, EventArgs e) { MessageBox .Show ("Button Click!"); if (ButtonClick != null) { ButtonClick(sender, e); } } } } Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim test As New MyControl AddHandler test.ButtonClick, AddressOf TestClick Me.Controls.Add(test) End Sub Private Sub TestClick(ByVal sender As Object, ByVal e As EventArgs) MsgBox("Test") End Sub End ClassPublic Class MyControl Inherits UserControl Private btn As Button Private txtBox As TextBox Public Event ButtonClick(ByVal sender As Object, ByVal e As EventArgs) Public Sub New() btn = New Button With {.Text = "Button", .Dock = DockStyle.Top} txtBox = New TextBox With {.Text = "TextBox", .Dock = DockStyle.Bottom} Me.Controls.Add(btn) Me.Controls.Add(txtBox) AddHandler btn.Click, AddressOf BtnClick End Sub Public Sub BtnClick(ByVal sender As Object, ByVal e As EventArgs) MsgBox("Button Click!") RaiseEvent ButtonClick(sender, e) End SubEnd Class
private void button1_Click(object sender, EventArgs e)
{
if (ButtonClick != null) ButtonClick(sender, e);
}
然后用代理实现自定义事件啊
重写事件
然后使用时,记得定义事件函数,然后注册事件就可以了.
如.
private void cbuttonclick (sender ,e )
{
//函数...
}
复合控件 控件= new 复合控件();
控件.ButtonClick += this.cbuttonclick ;
就可以了...
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
MyControl test = new MyControl();
test.ButtonClick += TestClick;
this.Controls.Add(test);
} private void TestClick(object sender, EventArgs e)
{
MessageBox.Show("Test");
} } public class MyControl : UserControl
{ private Button btn;
private TextBox txtBox; public event ButtonClickEventHandler ButtonClick;
public delegate void ButtonClickEventHandler(object sender, EventArgs e);
public MyControl()
{
btn = new Button { Text = "Button", Dock = DockStyle.Top };
txtBox = new TextBox { Text = "TextBox", Dock = DockStyle.Bottom };
this.Controls.Add(btn);
this.Controls.Add(txtBox);
btn.Click += BtnClick;
} public void BtnClick(object sender, EventArgs e)
{
MessageBox .Show ("Button Click!");
if (ButtonClick != null)
{
ButtonClick(sender, e);
}
} } }
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim test As New MyControl
AddHandler test.ButtonClick, AddressOf TestClick
Me.Controls.Add(test)
End Sub Private Sub TestClick(ByVal sender As Object, ByVal e As EventArgs)
MsgBox("Test")
End Sub
End ClassPublic Class MyControl
Inherits UserControl Private btn As Button
Private txtBox As TextBox Public Event ButtonClick(ByVal sender As Object, ByVal e As EventArgs)
Public Sub New()
btn = New Button With {.Text = "Button", .Dock = DockStyle.Top}
txtBox = New TextBox With {.Text = "TextBox", .Dock = DockStyle.Bottom}
Me.Controls.Add(btn)
Me.Controls.Add(txtBox)
AddHandler btn.Click, AddressOf BtnClick
End Sub Public Sub BtnClick(ByVal sender As Object, ByVal e As EventArgs)
MsgBox("Button Click!")
RaiseEvent ButtonClick(sender, e)
End SubEnd Class