Winform开窗,筛选数据后返回数据的方法
时间:2014-05-29 02:22:51
收藏:0
阅读:629
在开发中,经常需要打开另一个窗体(简写为“开窗”),然后在开窗中进行数据筛选,选中需要的数据,最后将值传递给本原来的窗体。而且,这个开窗可以重复用于多个地方,其效果如同日历控件的弹出窗口。如下图所示:
测试环境
vs2008
基本思路
1、创建一个窗体类。
(1)为该类添加用于传递值的属性。
(2)为该类添加一个事件,用于通知调用方值已经准备好。
(3)在窗体类的某个函数中,如单元格双击处理函数中,为属性赋值,并引发这个事件。
2、调用该窗体类。
(1)定义一个全局的窗体类对象。
(2)在调用函数中,初始窗体对象,注册一个事件处理函数。
(3)在事件处理函数中,就可以使用上面定义的属性值。
创建窗体类
1、添加一个名为lookup的窗体,在上面布置如下的控件:
2、定义2个属性。
/// <summary> /// 用户编号 /// </summary> public string UserId { get { return _UserId; } } string _UserId; /// <summary> /// 用户名 /// </summary> public string UserName { get { return _UserName; } } string _UserName;
3、添加1个名为DataSelected的事件。
public event EventHandler DataSelected;
4、在dataGridView控件的CellDoubleClick事件处理函数中,为2个属性赋值,引发DataSelected事件。
private void dataGridView1_CellDoubleClick( object sender, DataGridViewCellEventArgs e ) { if( this.DataSelected != null ) { this._UserId = dataGridView1.Rows[ e.RowIndex ].Cells[ "userId" ].Value.ToString(); this._UserName = dataGridView1.Rows[ e.RowIndex ].Cells[ "userName" ].Value.ToString(); // 引发事件 this.DataSelected( null, null ); } this.Close(); // 关闭本窗体 }
调用该窗体类
1、新建一个窗体,在上面放置如下的控件:
2、定义一个全局的lookup对象。
Lookup lookup;
3、在按钮的单击事件中进行如下处理:
private void button1_Click( object sender, EventArgs e ) { lookup = new Lookup(); lookup.DataSelected += new EventHandler( lookup_DataSelected ); lookup.Show(); }
4、处理DataSelected事件
void lookup_DataSelected( object sender, EventArgs e ) { textBox1.Text = lookup.UserId; textBox2.Text = lookup.UserName; }
评论(0)