首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> .NET Framework >> 正文

.net中Windows窗体间的数据交互(一)

还是让我们来修改Form2的代码。

Private TextBox textBoxFrm12;

private CheckBox checkBoxFrm12;

public Form2(TextBox heckbo,CheckBox heckbox)

{

     InitializeComponent();

     this.textBoxFrm2.Text = heckbo.Text;

     this.checkBoxFrm2.Checked = heckbox.Checked;

     this.textBoxFrm12 = heckbo;

     this.checkBoxFrm12 = heckbox;

}

现在我们传了两个引用类型的数据:TextBox类型,和CheckBox;另外在Form2中增加了两个类数据成员textBoxFrm12、checkBoxFrm12用来分别保存构造函数传来的变量,不过他们并不属于Form2的Controls容器。修改Form2的确定按钮点击事件函数:

private void buttonOK_Click(object sender, System.EventArgs e)

{

     this.textBoxFrm12.Text = this.textBoxFrm2.Text;

     this.checkBoxFrm12.Checked = this.checkBoxFrm2.Checked;

     this.Close();

}

上面的代码我们通过把textBoxFrm2的Text和checkBoxFrm2.Checked赋给textBoxFrm12和checkBoxFrm12完成了对主窗体中的textBoxFrm1和checkBoxFrm2的修改,因为textBoxFrm1和textBoxFrm12是同一个引用,而checkBoxFrm2和checkBoxFrm12也是。

到这里为止功能是实现了,但是总觉得不是很合理,让两个窗体控件传来传去,现在我举一个恰当一点的例子。

修改了两个窗体:

主窗体子窗体

<第二个例子>

说明:在这个例子中我们的两个窗体都加了一个ListBox用来显示ArrayList中的内容。

主窗体中控件:listBoxFrm1,buttonEdit;

子窗体中控件:listBoxFrm2,textBoxAdd,buttonAdd,buttonEdit,buttonOK。

这次我们用ArrayList来作为传递数据,在Form1中定义类数据成员:

private ArrayList listData1;

在构造函数中增加了对listData1进行内存分配,并生成数据最终绑定到listBoxFrm1,

public Form1()

{

     InitializeComponent();

     this.listData1 = new ArrayList();

     this.listData1.Add(DotNet);

     this.listData1.Add(C#);

     this.listData1.Add(Asp.net);

     this.listData1.Add(WebService);

     this.listData1.Add(XML);

     this.listBoxFrm1.DataSource = this.listData1;

}

另外,对修改按钮点击事件处理函数的修改如下:

private void buttonEdit_Click(object sender, System.EventArgs e)

{

     Form2 formChild = new Form2(this.listData1);

     formChild.ShowDialog();

     this.listBoxFrm1.DataSource = null;

     this.listBoxFrm1.DataSource = this.listData1;

}

相对与主窗体,对子窗体作相应修改,也在Form2中增加了类数据成员:

private ArrayList listData2;

用来保存对主窗体中listData1的引用。

修改构造函数:

public Form2(ArrayList listData)

{

     InitializeComponent();

     this.listData2 = listData;

     foreach(object o in this.listData2)

     {

         this.listBoxFrm2.Items.Add(o);

     }

}

这里让listData2同listData1指向同一个引用;另外没有对listBoxFrm进行绑定,采用了填充。

好了,下面是对数据操作的时候了。

上一页  [1] [2] [3] 下一页

【责编:John】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 社区讨论
 博客论点
 Dotnet频道相关导航