总结C#中窗体间传递数据的几种方法 (由别人的方法整理) 在编写C#windows 应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问题:在form1 中打开一个form2 窗口作为录入界面,将录入的值经转换后在form1 中显示。 采用了委托的方法,可以实现。(与 VC的回调的应用相似) 1.可以通过委托的方法来解决 问题:通过 form1 做一个录入界面,将里边通过文本框录入的数值复值给 form2 中的listview 各列,用3 个textbox1.text 举例吧,分别对应listview 的3 个列。 可以这么做,如果两个窗体是在同一个命名空间下 定义一个代理,注意这个代理是全局的:(即同一命名空间下,与 Form1,Form2 平级的) 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 的值给form1, Form1 frmEdit=new Form1(new MyInvoke(UpdateListView),string para1,string para2...); frmEdit.ShowDialog(this); 然后将Form1 的构造函数改成可以接收几个参数的就行了。 2.假如主框架为 Form1,打开的搜索对话框是Form2.直接在Form2 类中申明一个Form1 实例:Form1 f1=new Form1();然后就可以通过 f1 来调用 Form1 中的域和函数了。其实不是这样的,你申明的新的Form1 实例不是原来的那个Form1 对象了,这样操作的是新的Form1 中的域和函数,和最先打开的Form1 是...