首页 > 代码库 > 简单的委托实例

简单的委托实例

namespace 使用委托窗体传值

{
    public partial class Form1 : Form  // 窗体1
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            // 创建Form2实例f2
            Form2 f2 = new Form2();
            // 向PassValue事件订阅一个事件,该事件源会携带一个带textbox2的信息
            f2.PassValue+=new Form2.SetTextToLabelHandler(Form2_ButtonClicked);
            f2.Show();
        }
        private void Form2_ButtonClicked(object send, SetTextToLabelEventArgs e) {
            label1.Text = e.Text;
        }
    }  
}
 
namespace 使用委托窗体传值
{
    public partial class Form2 : Form // 窗体2
    {
        public Form2()
        {
            InitializeComponent();
        }
        // 声明传值委托
        public delegate void SetTextToLabelHandler(object sender, SetTextToLabelEventArgs e);
        // 声明一个传值委托类型的事件
        public event SetTextToLabelHandler PassValue;
 
        private void button1_Click(object sender, EventArgs e)
        {
            // 创建事件源类实例并传递textbox1的值过去
            SetTextToLabelEventArgs args = new SetTextToLabelEventArgs(textBox1.Text);
            PassValue(this, args); // 触发事件
            this.Dispose();
        }
    }
    public class SetTextToLabelEventArgs : System.EventArgs {
        public string Text { getset;}
        public SetTextToLabelEventArgs(string text) {
            this.Text= text;
        }
    }
}

简单的委托实例