c# winform 給自定義控制元件新增事件
阿新 • • 發佈:2019-02-03
1)使用者控制元件UserControl1.cs
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 WindowsFormsApplication28 { public partial class UserControl1 : UserControl { private Button btnTest = new Button(); //定義事件 public delegate void MyDelegate(object sender, EventArgs e); public event MyDelegate myEvent; public UserControl1() { InitializeComponent(); //button btnTest.Text = "test"; btnTest.Location = new Point(1, 1); btnTest.Click += new EventHandler(btnTest_Click); this.Controls.Add(btnTest); } void btnTest_Click(object sender, EventArgs e) { //將自定義事件繫結到控制元件事件上 if (myEvent != null) { myEvent(sender, e); } } } }
2)窗體Form1.cs
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 WindowsFormsApplication28 { public partial class Form1 : Form { UserControl1 userControl1 = new UserControl1(); TextBox textBox1 = new TextBox(); public Form1() { InitializeComponent(); //UserControl userControl1.Location = new Point(1, 1); //呼叫自定義事件 userControl1.myEvent += new UserControl1.MyDelegate(userControl1_myEvent); this.Controls.Add(userControl1); //TextBox textBox1.Location = new Point(1, 1 + userControl1.Height + 1); this.Controls.Add(textBox1); } void userControl1_myEvent(object sender, EventArgs e) { textBox1.Text = "success"; } } }