使用委托进行窗体之间的传值

一、传统的方式

创建一个公共数据资源类,用于存储窗体2的TextBox的值:

    public class ComValue
    {
       public static string Txtvalue { get; set; }
    }

窗体1的代码:

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Show();
        }     //使用timer 不停的对label2进行复制
        private void timer1_Tick(object sender, EventArgs e)
        {
            label2.Text = ComValue.Txtvalue;
        }

窗体2的代码:

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Show();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            label2.Text = ComValue.Txtvalue;
        }

这种方式通过使用timer,消耗资源。

二、使用委托传值,将form1为lable2赋值的方法传递给form2

窗体1的代码:

        private void button1_Click(object sender, EventArgs e)
        {       //将SetValue传递给Form2,让Form2来执行这个方法
            Form2 f2 = new Form2(SetValue);
            f2.Show();
        }
     //给label2赋值的方法
        void SetValue(string str)
        {
            label2.Text = str;
        }

窗体2的代码:

        public delegate void del(string str);
        private del de1;
        public Form2(del del)
        {
            this.de1 = del;
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.de1.Invoke(textBox1.Text.Trim());//这里最终执行的是窗体1的SetValue函数
        }

窗体界面与执行结果:

原文地址:https://www.cnblogs.com/netlws/p/8907249.html

时间: 2024-10-02 01:18:46

使用委托进行窗体之间的传值的相关文章

Winform中利用委托实现窗体之间的传值

点击打开按扭,打开传输值窗体 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 8 public void getValue(string strV) 9 { 10 this.textBox1.Text = strV; 11 } 12 13 private void button1_Click(object sender, EventArgs e) 14 { 15 F

C# 委托 事件 之 窗体之间互传值

C# 委托 事件 之 窗体之间互传值 效果: Form1.cs: using System; using System.Windows.Forms; namespace 窗体事件互传值2 { public delegate void SetTxb2Del(string str, object obj);//定制针对Txb2的委托 public partial class Form1 : Form { private event SetTxb2Del st2dEvent;//声明Txb2委托的事件

使用委托实现c#,窗体与窗体之间的传值

主界面: Form1中的代码: namespace _06委托练习_窗体传值{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        } private void btn1_Click(object sender, EventArgs e)        {            Form2 f2=new Form2(txt

C#各个窗体之间如何传值啊!

1.你自定义窗体时为窗体增加相应的属性,比如:class MyForm:Form{....private string something;public string Something{get{return something;}set{something=value;}}}通过类似这种属性来传值:form1.Something=xxx 2.另一种是建立一个中间件来存储数据,比如建立一个Record类:class Record{public static string Something;}二

C#窗体之间事件传值

//第二个窗体 public delegate void DAddress(string address);        public event DAddress ESignAddress; protected void SignAddress(string address)        {            ESignAddress(address);        } private void BtnClick(object sender,Eventargs e) { SignAd

winform独立窗体之间传值的简单方法

最近做一个多窗体联动的小程序,用到了窗体间传值. 网络上到处都是父窗体和子窗体之间传值的方法,总结起来有 1.有参数的构造函数, 2.委托 以委托为例,父窗体如果想要发送信息给子窗体,只需要在父窗体中定义好事件. //str为发送内容,formName为指定要发送给的窗体名字 public delegate void ReceiveMsg(string str,string formName); public event ReceiveMsg receiveMsg; 然后在实例化子窗体时,将子窗

一个简易的便签工具:探索窗体之间传值和传引用的方法

简单的便签工具:实现了基于文本的便签信息的浏览,删除,添加.可以查看时间,实时更新数据. 这个便签工具完全基于面向对象的编程方式,首先定义Note类,然后使用NoteManager类进行便签的管理.其中的关键就是在NoteManager类中定义list<Note>泛型集合.原理上和ArrayList基本是一致的. NoteManager的工作原理: public List<Note> list;//定义一个泛型集合,并在构造函数中初始化. private int CurrentIn

winform 窗体之间的操作

1 通过一个窗体按钮打开另一个窗体 Form f2 = new Form2(); f2.Show(); 通过这个打开第二个页面  要想只显示一个页面只能隐藏第一个页面 如果第一个页面关闭 第二个页面也会跟着关闭.. 2窗体之间的传值 窗体之间传值 需要两个甚至多个窗体 Form f2 = new Form2(要传递的值);f2.Show(); 然后再另一个需要这个值的窗体中 Users z = null;//根据值的类型实例化public Form4(Users a) //方法这里也要写要传入的

委托:Winform实现窗体间的传值

软件界面如上所示:点击接收窗体实现打开发送窗体,发送窗体点击“发送”,即可发送到接收窗体,可以实现窗体间的传值. 接收窗体的主要代码: /// <summary> /// 打开发送窗体 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOpen_Click(o