首先在form2中新增一个自定义函数
public
form2(string
str)
{
textbox1.text=str;
initializecomponent();
}
然后在form1中调用即可
form2
frm2
=
new
form2(x);
frm2.show();
可以这么做,如果两个窗体是在同一个命名空间下:
定义一个代理,注意这个代理是全局的:
public delegate void MyInvoke(string Item1,string Item2,string Item3);
//在窗体From2中有这么一个回调函数,用于在ListView里添加一个新项的:
private void UpdateListView(string Item1,string Item2,string Item3)
{
ListView1.Items.Add(Item1);
ListView1.Items[ListView1.Items.Count - 1].SubItems.Add(Item2);
ListView1.Items[ListView1.Items.Count - 1].SubItems.Add(Item3);
}
//比如说点击Form2的一个按钮弹出Form1进行录入,在点击按钮的事件下:
//把委托传过去
Form1 frmEdit=new Form1(new MyInvoke(UpdateListView));
frmEdit.ShowDialog(this);
//在Form1里定义一个属性
private MyInvoke mi=null;
在构造函数中接收这个委托:
public Form1(MyInvoke myInvoke)
{
this.mi=myInvoke;
}
//录入数据后,点击OK按钮,在点击事件下:
//回调
this.mi(this.TextBox1.Text,this.TextBox3.Text,this.TextBox3.Text);
this.Close();//关闭Form1
说明:以上代码没有测试过,但以前这么用过,虽然方法比较麻烦,但用起来不错,有问题再说...
一般是使用委托
还有个你可以把Form2.textBox1的Modifiers设为Public
并且你也不能这样调用,要这样
比如你实例化Form2的时候,对象名叫frm2
就是Form2 frm2 = new Form2()
调用就是frm2.textBox1.Text = XXXX;
把Form2.textBox1的Modifiers设为Public
form2设置public权限看看