下载此文档

总结C#中窗体间传递数据的几种方法.doc


文档分类:IT计算机 | 页数:约23页 举报非法文档有奖
1/23
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/23 下载此文档
文档列表 文档介绍
总结 C# 中窗体间传递数据的几种方法(由别人的方法整理) 在编写 C#windows 应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问题:在 form1 中打开一个 form2 窗口作为录入界面, 将录入的值经转换后在 form1 中显示。采用了委托的方法, 可以实现。(与 VC 的回调的应用相似) 1 .可以通过委托的方法来解决问题:通过 form1 做一个录入界面, 将里边通过文本框录入的数值复值给 form2 中的 listview 各列,用 3个 举例吧,分别对应 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) { (Item1); [ - 1].(Item2); [ - 1].(Item3); } // 比如说点击 Form2 的一个按钮弹出 Form1 进行录入, 在点击按钮的事件下: // 把委托传过去 Form1 frmEdit=new Form1(new MyInvoke(UpdateListView)); (this); //在 Form1 里定义一个属性 private MyInvoke mi=null; 在构造函数中接收这个委托: public Form1(MyInvoke myInvoke) { =myInvoke; } // 录入数据后, 点击 OK 按钮, 在点击事件下: // 回调 (,,); ();// 关闭 Form1 补充:如果我要是想再把 form2 的值给 form1 , Form1 frmEdit=new Form1(new MyInvoke(UpdateListView),string para1,string para2...); (this); 然后将 Form1 的构造函数改成可以接收几个参数的就行了。 2. 假如主框架为 Form1 , 打开的搜索对话框是 Form2. 直接在 Form2 类中申明一个 Form1 实例: Form1 f1=new Form1(); 然后就可以通过 f1 来调用 Form1 中的域和函数了。其实不是这样的, 你申明的新的 Form1 实例不是原来的那个 Form1 对象了, 这样操作的是新的 Form1 中的域和函数,和最先打开的 Form1 是没有关系的。我们要做的是把当前的 Form1 实例传递给 Form2 ,如果是这样的话,问题就很好解决了。方法 1 :首先,我们在 Form2 中定义: private Form1 mF_Form 我们更改 Form2 的构造函数为有参数的 public Form2 ( Form1 myForm ) { // // Windows 窗体设计器支持所必需的// ponent (); = myForm ; ///// 这样在 Form1 中申明 Form2 的时候就把 Form1 的实例传递过来了// // TODO: 在 ponent 调用后添加任何构造函数代码//}在 Form1 中,我在要用到 Form2 的地方申明如下: Form2 f2=new Form2(this);//// 这里的 this 指的就是 Form1 当前的实例, 也就是把当前 Form 1 的实例通过 Form2 的构造函数传递给 Form2 类( 其实在网上看到过比较蠢的方式, 就是在构造函数里面传递要传递的信息如: 字符串或是数字等, 这样做很有局限性, 不能传递其他的, 所有我们可以直接传递实例, 来完成传递更多的信息。) 这样在 Form2 中使用 my

总结C#中窗体间传递数据的几种方法 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数23
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xxj16588
  • 文件大小0 KB
  • 时间2016-05-16