C#委托学习:委托实现窗体之间简单传值

实现功能描述:

从窗体点击按钮,并记录点击次数,将点击的次数传递给主窗体展示。

UI设计:

主窗体:拖放两个Label:label1和lblCounter,label1的Text属性设置为“从窗体被点击次数:”,lblCounter的Text属性设置为“0”。从窗体:拖放一个Button:btnAddOne,Dock属性设置为“Fill”。

 

功能实现:

【1】声明委托

    /// <summary>
    /// 【1】声明委托
    /// </summary>
    /// <param name="counter"></param>
    public delegate void AddOneDelegate(string counter);

【2】定义一个实际委托调用的方法,结构和被调用的委托一致

        /// <summary>
        /// 【2】定义一个实际委托调用的方法,结构和被调用的委托一致
        /// </summary>
        /// <param name="counter"></param>
        private void SetValueToUI(string counter)
        {
            lblCounter.Text = counter;
        }

【3】定义一个委托变量,并将实际执行的方法绑定在一起

        public FrmOther(AddOneDelegate addone)
        {
            InitializeComponent();
            //【3】定义一个委托变量,并将实际执行的方法绑定在一起
            this.addOne = addone;
        }   

    
        /// <summary>
        /// 【3】定义一个委托变量
        /// </summary>
        private AddOneDelegate addOne;

【4】调用

        /// <summary>
        /// 点我按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAddOne_Click(object sender, EventArgs e)
        {
            counter++;
            //【4】调用
            this.addOne.Invoke(counter.ToString());
        }

在FrmOther中定义计数器counter,点击的时候,记录一次。并将记录的值通过委托调用的方式传递给主窗体。

        /// <summary>
        /// 计数器
        /// </summary>
        private int counter = 0;

修改FrmOther构造函数的定义,添加一个AddOneDelegate委托参数,并将参数赋值给委托变量

        public FrmOther(AddOneDelegate addone)
        {
            InitializeComponent();
            //【3】定义一个委托变量,并将实际执行的方法绑定在一起
            this.addOne = addone;
        }  

FrmMain窗体在加载的时候,新建一个从窗体FrmOther,并将UI展示的方法实例传给从窗体。

        public FrmMain()
        {
            InitializeComponent();
            FrmOther objFrm = new FrmOther(SetValueToUI);
            objFrm.Show();
        }

 

完整源代码

///-------------------------------------------------------------------------------------------------------
/// Project:使用委托实现窗体间简单通信
/// Description:主窗体:委托声明和定义委托实际执行的方法
/// Author:Mef
/// Source:Mef Studio
/// Date:2018-11-27
///-------------------------------------------------------------------------------------------------------

using System.Windows.Forms;

namespace PassingValueWindows
{
    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
            FrmOther objFrm = new FrmOther(SetValueToUI);
            objFrm.Show();
        }

        
        /// <summary>
        /// 【2】定义一个实际委托调用的方法,结构和被调用的委托一致
        /// </summary>
        /// <param name="counter"></param>
        private void SetValueToUI(string counter)
        {
            lblCounter.Text = counter;
        }
    }

    /// <summary>
    /// 【1】声明委托
    /// </summary>
    /// <param name="counter"></param>
    public delegate void AddOneDelegate(string counter);
}
///-------------------------------------------------------------------------------------------------------
/// Project:使用委托实现窗体间简单通信
/// Description:从窗体:委托变量和实际方法的绑定、调用
/// Author:Mef
/// Source:Mef Studio
/// Date:2018-11-27
///-------------------------------------------------------------------------------------------------------

using System;
using System.Windows.Forms;

namespace PassingValueWindows
{
    public partial class FrmOther : Form
    {
        public FrmOther(AddOneDelegate addone)
        {
            InitializeComponent();
            //【3】定义一个委托变量,并将实际执行的方法绑定在一起
            this.addOne = addone;
        }

        /// <summary>
        /// 计数器
        /// </summary>
        private int counter = 0;

        /// <summary>
        /// 点我按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAddOne_Click(object sender, EventArgs e)
        {
            counter++;
            //【4】调用
            this.addOne.Invoke(counter.ToString());
        }

        /// <summary>
        /// 【3】定义一个委托变量
        /// </summary>
        private AddOneDelegate addOne;
    }
}

实现演示

为点击之前,

点击多次之后,

源码地址:https://download.csdn.net/download/youyomei/10944620

Over

每次记录一小步...点点滴滴人生路...

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值