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

一、传统的方式

创建一个公共数据资源类,用于存储窗体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函数
}

窗体界面与执行结果:

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

上一篇:java.sql.SQLException: Column count doesn't match value count at row 1 Query: insert into category values(null,?,?,?) Parameters: [1111111, 1111, 软件]


下一篇:Hive的三种安装方式(内嵌模式,本地模式远程模式)