c#委托与事件完成方法的传递与参数的传递案例

12 篇文章 4 订阅

简单说一下委托的含义

委托就是可以将别的类中的方法直接传递到委托所在类中使用的方法,具体操作步骤如下。
搭建界面如下:
在这里插入图片描述
具体操作如下//form1全部代码

namespace 委托
{
    public partial class Form1 : Form
    {
        
        Form2 form2 = new Form2();
       
        public Form1()
        {
           InitializeComponent();
            form2.Show();
            //1第三步:将需要委托的方法绑定在委托上
            Form2.myVoidtest += new myVoid(returnF1txtBox);

            //2第三步:将需要委托的方法绑定在委托上
            Form2.myParamtest += new myParam(setF1txtBox);
        }
        //获得窗体1的值需要用到的被委托的方法
        public void returnF1txtBox()//无值类型,所以定义的委托也为无值类型
        {//此处有废话繁琐之意,但不用在乎内容此处只是表达,能直接将方法传递
            form2.F2txtBox.Text = F1txtBox.Text;
        }

        //向窗体1传值需要用到的被委托的方法
        private void setF1txtBox(string txt)//需值类型string的txt,所以定义的委托也为string txt
        {
            F1txtBox.Text = txt;
        }
       
    }
}

//form2全部代码

namespace 委托
{
    //1、委托传递方法(方法不使用参数)
    //1第一步:在想要得到方法或参数的窗体定义委托
    //委托可在类外,命名空间内
    public delegate void myVoid();

    //2、委托传递参数(其实不是把本窗体参数传到另一个窗体,而是用委托将另一个窗体需要用到此参数的方法拿过来,在本窗体将参数传进去)
    //2第一步:在想要得到方法或参数的窗体定义委托
    //委托的方法中需要用到的参数,也是委托中“传递”的参数类型与参数名
    public delegate void myParam(string text);
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        //1第二步:定义委托所对应的事件,相当于将委托中的方法或者值赋值给定义的具体事件
        //完成第三步后,事件才会具有内容,在此窗体中可以直接使用
        public static event myVoid myVoidtest;
        //获得窗体1的值
        private void btn1_Click_1(object sender, EventArgs e)
        {
            myVoidtest();
        }

        //2第二步:定义委托所对应的事件,相当于将委托中的方法或者值赋值给定义的具体事件
        //完成第三步后,事件才会具有内容,在此窗体中可以直接使用
        public static event myParam myParamtest;
        //向窗体1传值
        private void btn2_Click(object sender, EventArgs e)
        {
            //因为委托的方法需要用到string的txt,myParamtest相当于方法的实例,所以使用时需要传入string类型值F2txtBox.Text
            myParamtest(F2txtBox.Text);
        }
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值