首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

多窗口传值有关问题

2012-01-14 
多窗口传值问题有三个窗口:主窗口,查询窗口,查询集合窗口主窗口点击查询弹出查询条件窗口,然后键入查询条

多窗口传值问题
有三个窗口:主窗口,查询窗口,查询集合窗口
主窗口点击查询弹出查询条件窗口,然后键入查询条件,按查询,查询窗口消失,
并将查询结果赋值给第三个窗口(查询集合窗口)
选取第三个查询记录中的记录来填充第一个窗口,同时关闭第三个窗口。
请问这类问题如何处理。

[解决办法]
e.g.

一些事件参数:
public class QueryConditionChangedEventArgs : EventArgs
{
private string _someCondition;
  
public QueryConditionChangedEventArgs(string condition)
{
_someCondition = condition;
}

public string Condition
{
get{return _someCondition;}
}
}

public class QueryCollectionSelectedEventArgs : EventArgs
{
private string _seletedCondition;
 
public QueryCollectionSelectedEventArgs(string selected)
{
_selectedCondition = selected;
}

public string SelectedCondition
{
get{return _selectedCondition;}
}
}

一些事件委托:

public delegate void QueryConditionChangedEventHandler(object sender, QueryConditionChangedEventArgs e);

public delegate void QueryCollectionSelectedEventHandler(object sender, QueryCollectionSelectedEventArgs e);


然后, QueryForm Closing中:

public event QueryConditionChangedEventHandler OnQueryConditionChanged;
private string _yourCondition;

private void QueryForm_FormClosing(object sender, EventArgs e)
{
if(OnQueryCondtionChanged != null)
{
QueryConditionChangedEventArgs qce = new QueryConditionChangedEventArgs(_yourCondition);
OnQueryConditionChanged(this, qce);
}
}

MainForm中:

private void MainForm_Button1_Click(object sender, EventArgs e)
{
QueryForm qf = new QueryForm();
qf.OnQueryConditionChanged += new QueryConditionChangedEventHandler(foo);
qf.ShowDialog(this);
}

private void foo(object sender, QueryConditionChangedEventArgs e)
{
//feel free to handle the query condition by using e.Condition
}


其余类推

热点排行