日期:2014-05-18  浏览次数:20855 次

c#关于winform多窗口传值的问题
我的设计是这样的,我有三个form。

form1:

public partial class Form1 : Form
  {
  public delegate void MyDel(string value);
  public event MyDel txtzt;

  public Form1()
  {
  InitializeComponent();
  }
   
  private void button1_Click(object sender, EventArgs e)
  {
  Form2 f2 = new Form2(this);
  f2.Show();
  }

  }




form2

public partial class Form2 : Form
  {
  public Form2(Form1 f1)
  {
  InitializeComponent();
  f1.txtzt += new Form1.MyDel(txtzt);
  }
   
  private void txtzt(string s)
  {
  this.textBox1.Text = s;
  }
  }

请问form3怎么设计的?

------解决方案--------------------
哎,我刚做完这个。我给你说咋办吧,可能我的方法比较一般奥,别喷。
假如FORM1是你的登录基本界面,里面有个BUTTON,你现在点击这个按钮去打开另一个FORM2,FORM2里可能有很多其他功能,所以你要在点击按钮出现FORM2之前,希望它出现一个密码权限界面,对不。
那你可以这么做:
在FORM1里的按钮里去打开PASSWORDFORM(密码权限FORM)
....button_click()
{ passwordform f =new passwordform();
f.show();
}
这时候BUTTON按钮就可以打开密码登陆界面了,然后再密码界面里的加一个按钮,2个文本框,在这个按钮里这么写:
button2_clck()
{
if(textbox.text1==" 写你的账号" && textbox.text2=="写你密码")
{
Form3 m = new Form3();
m.show();
}

}
这么一来只要账号密码对了,就可以进入FORM3了,也就是你想打开的另一个界面。

------解决方案--------------------
一个页面定义一个属性,然后从另一个页面传过去。
经试验,这个方法很好用,假如LZ还不是很明白,可以给我私信或是留言,我这恰好有现成例子。
------解决方案--------------------
晕,第一个form忘记加1了
表示两个界面就搞定,form1为主界面,打开form1隐藏,弹出form2验证登陆,结束后关闭form2,显示form1
------解决方案--------------------
可以用构造函数传数据三
给每个窗体的构造函数加上一个参数,你在实例化窗体的时候给参数赋值,就可以把一个窗体的值传到下一个窗体了