c#中如何在两个窗体间传递数据?

窗体A、B,A中有listbox1,B中有listbox2和按钮1。
首先打开窗体A,通过A上的另外一个按钮打开窗体B,窗体A不关闭;
现在在窗体B的listbox2中输入字符串S,点击按钮1,需要窗体A的listbox1中显示出S,如何实现?
不能重新生成窗体A。
需要核心代码!

做了一个测试 按照vwenye 回复的
Form1 中 打开Form2中此处用 TextBox
Form1中打开 Form2按扭代码为:
private void button3_Click(object sender, EventArgs e)
{
Form2 f = new Form2();

f.MessageSent += delegate(object caller, string msg)
{
this.textBox1.Text = msg;
};
f.ShowDialog();
}
Form2中代码为:
public delegate void SendMessage(object sender, string message);
public event SendMessage MessageSent;

public Form2()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
if (this.MessageSent != null)
MessageSent(this, textBox1.Text);
}

这样在Form2中修改TExtBox 值点击按钮则Form1中会自动变化
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-04
用get和set方法不行,除非这个类静态的,你可以选择用定义一个静态类,来传参数,或者用实例窗口传参数的方法。追问

能帮忙写下核心代码吗?

第2个回答  2011-06-04
在B中写个属性即可 public string s; 写get,set方法
在A中直接 .s 就得到值了追问

能写详细点儿吗?对get、set不是明白

追答

加我QQ说 350316554

第3个回答  2011-06-04
B里定义
public delegate void SendMessage(object sender, string message);

然后增加事件 public event SendMessage MessageSent;
然后给按钮一加Onclick事件
里面加上
if (this.MessageSent != null)
MessageSent(this, this.listbox2.Text);

A里面
创建B的时候
Form2 form1 = new Form2("Form 1");
form1.MessageSent +=
delegate(object caller, string msg){
this.listbox1.Text = msg;
};

大概如此
第4个回答  2011-06-04
对了,用get,set方法最好的啥
相似回答