pljzd2005 发表于 2010-9-4 18:33

关于c#两窗体间文本框的传值


建两个窗体,每个窗体各有一个textbox和butten ,当点form1 中的butten时,弹出form2,在form2中的textbox输入文字,点butten ,此时form1中的textbox内容和form2中的textbox一样。我做了如下代码,但是实现不了,form1中的textbox内容没有任何反映,请高手指点:
form1中代码:
  private void button1_Click(object sender, EventArgs e)
        {
            Form2 fm = new Form2();
            fm.Show();
            
        }
        public string t
        {
            get { return this.textBox1.Text; }
            set { this.textBox1.Text = value; }
        }
form2中代码:
            private void button1_Click(object sender, EventArgs e)
        {  
            Form1 f = new Form1();
            f.t  = this.textBox1 .Text ;
        }
请高手指点,就用属性的方法传值,请不要用别的方法

makebest 发表于 2010-9-4 19:29

在 form2 中放一个属性保存 form1 的引用
public Form1  firstForm=null;

在 form1 的 单击事件这样写:
Form2 fm = new Form2();
fm.firstForm = this;
fm.Show();

这样两个窗体就可以互相调用了:  分别使用 fm 和 firstForm;
注意如果其中一个关了, 另一个再调用会有问题.

liubaoen 发表于 2010-9-5 18:57

传值的方法应该有很多种。
1.使用静态变量。
2.将被调用窗体增加一个公开的属性,直接访问就可以了。
3.使用委托,直接修改。

snowyezi 发表于 2010-9-9 10:49

当点击form1中的button时弹出form2用这种方式
private void button1_Click(object sender, EventArgs e)
{
form2 f=new form2();
f.ShowDialog();
}
form2的单击事件:
private void button1_Click(object sender, EventArgs e)
        {  
           form1 f=new form1(你要传到form1的值);
           f.ShowDialog();
        }
然后在form1窗体中声明一个string型的变量(因为我看到你上面是要获取一个值)
string valuest;//要是全局的哟!
在form1中添加public form1(string nn):this()
{
valuest=nn;
}
private void form1_Load(object sender, EventArgs e)
{
this.txtBox1.text=valuest;
}
这样因该可以实现的!

页: [1]

编程论坛