我在窗口1用一按钮打开窗口2,在窗口2填好数据后,按下一按钮将窗口2的数据传到窗口1并在窗口1并关闭窗口2,代码该怎么写?
窗口1的按钮
private void button9_Click(object sender, EventArgs e)
{
Form6 f6 = new Form6();
f6.ShowDialog();
textBox10.Text = _st;
textBox11.Text = _st1;
comboBox3.Text = _st3;
comboBox4.Text = _st2;
//红色的地方木有数据显示出来
}
窗口2按钮 :
private void button6_Click(object sender, EventArgs e)
{
Form7 f7 = new Form7();
f7.st = textBox1.Text;
f7.st1 = textBox2.Text;
f7.st2 = comboBox1.Text;
f7.st3 = comboBox2.Text;
this.Hide();
}
求高手指导该怎么改,急啊
用委托和事件来实现,Form2定义一个事件,Form1在打开Form2的时候得到From2的实例并注册Form2的事件.
void MyEvent(object sender,MyEventArgs e)
{
将参数通过 sender或 e 传到Form1。
}
相关代码如下:
Form2代码
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public delegate void MyDelegate(object sender, EventArgs e);
public event MyDelegate MyEvent;
private void button1_Click(object sender, EventArgs e)
{
if (MyEvent != null)
{
sender = "abc"; //这就是要传的参数,也可以自定义e来穿参数,一般都是自定义e 。sender穿对象本身
MyEvent(sender, new EventArgs());
this.Close();
}
}
}
From1代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.MyEvent += new Form2.MyDelegate(f2_MyEvent);
DialogResult result = f2.ShowDialog();
}
void f2_MyEvent(object sender, EventArgs e)
{
string temp = sender.ToString();//这是获得你传的参数
}
}
用Ajax数据回传
new Form6的时候将自己传进去:new Form(this),后面的应该清楚了吧
我是要在FORM6中显示FORM7传过来的值
@辉笑:
一个意思,new "窗口2"的时候把"窗口1(this)"传进去,在"窗口2"中设置“窗口1”中的控件的值就是了
使用委托实现,form1中定义一个方法用来改变form1中的内容,在form2里定义一个委托变量,然后在form1中对form2初始化的时候,对委托变量赋值,在form2的关闭事件中调用这个方法就行了,不明白的话问。
两种方法妥妥的,
1 定义一个都能访问到的静态变量
2 给 From6 添加一个构造函数,把要用的值在new 的时候传进去。
我是要在FORM6中显示FORM7传过来的值
窗口2作为窗口1的字窗口,然后向父窗口传值。
//窗口1打开窗口2的按钮函数 private void button1_Click(object sender, EventArgs e) { Form2 fm2 = new Form2(); fm2.Owner = this; fm2.ShowDialog(); }
//窗口2向窗口1回传数据,假定在窗口2中的TextBox输入数据,在Form1的Label中显示数据 private void buttonOK_Click(object sender, EventArgs e) { Form1 fm1 = new Form1(); fm1 = (Form1)this.Owner; string data = textBox1.Text; fm1.label1.Text = data; this.Close(); }
直接在构造函数中传进去吧,两个窗口是不同的类,成员变量不能共享的...