初学c#时,误以为属性和变量没什么区别,后来才渐渐体会到属性在windows窗体程序中的重要性,可以说它是窗体的接口,窗体之间的联系就是通过窗体来建立的。下面我就一例子来说明窗体间是如何进行通信的(传递数据)。
图1是我做通讯录时设计的一个界面,不难看出这个界面是用来实现查询功能的一部分.当选中Listbox中的某一项单击确定后会在图2所示的窗口中显示查询结果。
显然关于查询操作的代码应在图2(FrmSearchResult)的后台中实现,这就需要将图1(FrmSearch)中选定的项传递到图2中去,也就是需要实现两个窗体间的传值。实现代码如下
//在图1(FrmSearch)的后台写入代码
//selectedname用来保存选择的数据
string selectedname;
//双击图1(FrmSearch)的“确定”按钮后添加事件处理程序
private void btOk_Click(object sender, EventArgs e)
{
//存储被选定的项(也就是要传递的数据),为启动另一个线程做准备,
selectedname=(string)listBox.SelectedItem;
//因为要启动另一个窗体所以启动一个新线程
ThreadStart thread = new ThreadStart(runFrmSearchResult);
Thread t = new Thread(thread);
t.Start();
//关闭当前窗体
this.Close();
}
//自定义函数,实现实例化窗体功能
private void runFrmSearchResult()
{
FrmSearchResult fsr = new FrmSearchResult();
//哪来的name,带着疑问往下看,就是在这儿将窗体FrmSearch中的数据传递给了FrmSearchResult
fsr.name = selectedname;
fsr.ShowDialog();
}
//
//在FrmSearchResult 窗体后台写入代码:
//
public partial class FrmSearchResult : Form
{
./省略部分
//
//定义属性name,也就是大家在上面看到的那个name
private string _name;
public string name
{
get
{
return _name;
}
set
{
_name = value;
}
}
//
//下面你就可以根据name来写实现查询部分代码了,因为已经实现了从FrmSearch到FrmSearchResult的数据传递。
//省略部分/
}
不知道大家明白了没有?有什么问题可以探讨一下哦!