首页 新闻 赞助 找找看

C#中窗体间传值,把值更新的问题

0
[已解决问题] 解决于 2012-11-30 18:19
 在两个窗体中传值,,写的是公共类  然后值传过去了,但是这个窗口的值有了更新 怎样在另外个窗口中更新值
求大神们帮忙!!
捂着肚子的主页 捂着肚子 | 菜鸟二级 | 园豆:202
提问于:2012-11-29 21:05
< >
分享
最佳答案
1

1委托最好

2属性

public class Form1:Form
{
  public Form1(){

Form2 frm=new Form2("Hello");
frm.show();

//
Form2 frm2=new Form2();
frm2.Message="China!";
frm2.show();

}

  
}

public class Form2:Form{

 public string Message{get;set;}

  public Form2(){

}
 public Form2(string message){
   this.Message=message;
}
}
奖励园豆:5
在 水 一 方 | 小虾三级 |园豆:1097 | 2012-11-30 09:16

我的窗口只打开一次,只在第一次时打开,然后另外一个窗口的值有了更新,需要在这个窗口中更新,而不重新打开这个窗体

捂着肚子 | 园豆:202 (菜鸟二级) | 2012-11-30 11:07

@捂着肚子: 那就用委托啦。。。

在 水 一 方 | 园豆:1097 (小虾三级) | 2012-11-30 11:15
 1 利用委托事件来传递数据
 2 Form1中:一个lable1用来接受Form2中textbox1的信息,button1用来show出Form2
 3 Form1中代码:
 4 using System;
 5 using System.Collections.Generic;
 6 using System.ComponentModel;
 7 using System.Data;
 8 using System.Drawing;
 9 using System.Text;
10 using System.Windows.Forms;
11 namespace WinTest
12 {
13     public partial class Form1 : Form
14     {
15         public Form1()
16         {
17             InitializeComponent();
18         }
19         private void button1_Click(object sender, EventArgs e)
20         {
21             //单击该按钮时SHOW出第二个窗体
22             Form2 fm2 = new Form2();
23             fm2.myevent += new Form2.mydelegate(givevalue);//在SHOW出窗体的同时订阅FORM2的事件,调用givevalue()方法.
24             fm2.ShowDialog();
25         }
26         public void givevalue(string text) //用于修改label的方法
27         {
28             this.label1.Text = text;
29         }
30     }
31 }
32 Form2中:一个textbox1用来输入要传递的值,button1用来触发传递事件
33 Form2代码:
34 using System;
35 using System.Collections.Generic;
36 using System.ComponentModel;
37 using System.Data;
38 using System.Drawing;
39 using System.Text;
40 using System.Windows.Forms;
41 namespace WinTest
42 {
43     public partial class Form2 : Form
44     {
45         public delegate void mydelegate(string text);//定义一个委托
46         public event mydelegate myevent;//定义上诉委托类型的事件
47         public Form2()
48         {
49             InitializeComponent();
50         }
51         private void button1_Click(object sender, EventArgs e)
52         {
53             //在单击该窗体上的按钮时触发事件
54             if (myevent != null)
55             {
56                 myevent(textBox1.Text);
57             }
58         }
59     }
60 }

 

@捂着肚子: 

在 水 一 方 | 园豆:1097 (小虾三级) | 2012-11-30 11:18
其他回答(4)
0

delegate!

jone_e | 园豆:1410 (小虾三级) | 2012-11-29 21:51

这个是什么???  我是初学者,,求解  谢谢

支持(0) 反对(0) 捂着肚子 | 园豆:202 (菜鸟二级) | 2012-11-30 00:55
0

委托

王大湿 | 园豆:457 (菜鸟二级) | 2012-11-29 22:53

我是初学者,,还木有学委托的    还有其他方法没  谢谢 了

支持(0) 反对(0) 捂着肚子 | 园豆:202 (菜鸟二级) | 2012-11-30 00:56
0

委托是最好的方法

jason2013 | 园豆:1998 (小虾三级) | 2012-11-30 09:17

那用委托怎么做?

支持(0) 反对(0) 捂着肚子 | 园豆:202 (菜鸟二级) | 2012-11-30 11:07
0

委托

jerry-Tom | 园豆:4077 (老鸟四级) | 2012-11-30 10:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册