这两天看前辈的视频初识了窗体传值,于是自己跟着敲了两个Demo,方便以后复习、分享交流。
窗体传值的两种方法:1.通过属性构造方法传值 2.利用委托实现传值。
示例1:点击Form1中的按钮打开From2,点击Form2中的按钮改变窗体Form1的背景颜色。
Form1的代码:
1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 8 private void button1_Click(object sender, EventArgs e) 9 { 10 //通过Form2的构造函数将Form1对象传递到Form2中 11 Form2 form2 = new Form2(this); 12 form2.Show(); 13 } 14 }
Form2的代码:
1 public partial class Form2 : Form 2 { 3 //首先在Form2中定义Form1类型字段用来存储Form1对象 4 Form1 form1=null; 5 Random r = new Random(); 6 public Form2() 7 { 8 InitializeComponent(); 9 } 10 public Form2(Form1 form):this() 11 { 12 //通过构造方法将Form1对象给Form2字段赋值 13 form1 = form; 14 } 15 private void button1_Click(object sender, EventArgs e) 16 { 17 //随机改变Form1的背景颜色 18 form1.BackColor = Color.FromArgb(r.Next(256),r.Next(256),r.Next(256)); 19 } 20 }
示例2:Form1中有一个button、label,From2中有button、textBox。点击Form1中的按钮打开From2并在textBox中输入字符,
再点击Form2中的按钮将其输入的字符显示在Form1的label上。
Form1的代码:
1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 8 private void button1_Click(object sender, EventArgs e) 9 { 10 Form2 form2 = new Form2(ShowMsg); 11 form2.Show(); 12 } 13 14 //将这个方法通过构造函数传递给Form2 15 public void ShowMsg(string msg) 16 { 17 label1.Text = msg; 18 } 19 }
Form2的代码:
1 //在这里声明的委托需要与要传递的方法有相同的签名 2 public delegate void DelTest(string msg); 3 4 public partial class Form2 : Form 5 { 6 //声明委托字段用来存储Form1传来方法 7 public DelTest _del; 8 public Form2(DelTest del) 9 { 10 _del = del; 11 } 12 13 private void button1_Click(object sender, EventArgs e) 14 { 15 //执行委托回传数据 16 _del(textBox1.Text); 17 } 18 }
时间: 2024-10-29 19:09:44