C#窗体传值的两种方法

方法一:利用委托实时传值

委托的简单的理解

在C#中委托是重点也是难点,想要对委托有非常深入的了解可以详细参考这篇博客:通俗理解C#委托和事件.
这里我们只要简单记住:
1、委托是一种用户自定义类型
2、委托是方法的抽象,也就是说,我们定义的委托存储的是一系列具有相同签名和相同的返回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。

委托类型的定义

1、以delegate关键字开头
2、由返回类型+委托类型名+参数列表

public delegate void del_Value(string str_Value);
利用委托实现子窗体frmSub向父窗体frmMain实时传值

实现效果:
在这里插入图片描述
frmSub代码:

    public delegate void del_Value(string str_Value);//声明一个委托类型
    public partial class frmSub : Form
    {
        public del_Value _del_Value;//声明del_Value委托的传递方法
        public frmSub(del_Value Value)
        {
            this._del_Value = Value;//实现将值传递到方法内
            InitializeComponent();
        }
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            this._del_Value(textBox1.Text.Trim());//当值发生改变时,将值传递到方法内
        }
    }

frmMain代码:

        public frmMain()
        {
            InitializeComponent();
        }
        private void btnOpenfrmSub_Click(object sender, EventArgs e)
        {
            frmSub fs = new frmSub(showValue);//调用委托,委托中包含的showValue方法将被执行
            fs.Show();//点击按钮打开frmSub
        }
        void showValue(string value)//方法的具体实现,并获取frmSub的传递值
        {
            textBox1.Text = value;//将传递过来的值赋予textBox1
        }
    }

方法二:使用全局变量传值

这种方法实现起来非常简单,这里示例为frmMain向frmSub传值。当点击frmSub中的按钮时,将frmMain中的值传递过来。
代码如下:
frmMain:

    public partial class frmMain : Form
    {
        public static string str="123abc";//声明全局变量

frmSub:

        private void button1_Click(object sender, EventArgs e)
        {
            textBox2.Text = frmMain.str;
        }

多说几句

方法一和方法二都可以实现双向传值。对于实时变化的值采用委托的方法是一个不错的选择。比如,在做一些和硬件相关的数据采集的项目时非常有用,可以实时绘制数据波形。
关于窗体传值还有很多其他方法,如构造参数参数传值、公共属性传值,公共静态变量传值等。这些方法等以后有时间再研究。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值