![](https://i-blog.csdnimg.cn/blog_migrate/c35ad8121ac73e957c2718cc2a92b6aa.gif)
在Winform界面中窗体我们一般使用多文档进行展示,也就是类似一般的选项卡的方式可以加载多个窗体界面。一般来说,我们如果打开新的窗体,给窗体传递参数是很容易的事情,但是在框架层面,一般的窗体是通过动态创建的,一般传入窗体的类型,在多文档集合里面判断,如果存在则激活,如果不存在则创建的方式,所以我们传递参数会碰到一些问题。本文即使介绍如何在这种方式下,给窗体对象传递参数,从而实现相应的数据处理功能。
不管是主体界面中,左侧包含树形列表,还是顶部包含工具栏的情况,都可能涉及打开窗体的时候,传递一些初始化参数,方便窗体的更新显示的情况,这种的处理相对直接传值的方式需要复杂一点,我们可以通过接口、事件的方式进行处理,下面我来介绍一下整个实现的方式。
1、多文档窗体的构建或者激活
在我的Winform开发框架里面,我们加载多文档窗体的时候,都是统一采用一种方式来进行构建不存在或者激活已有窗体的,代码如下所示。
![复制代码](https://i-blog.csdnimg.cn/blog_migrate/da7051cb50a8e1c446ae34eaadc01af2.gif)
private void tool_Purchase_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
ChildWinManagement.LoadMdiForm(this, typeof(FrmPurchase));
} private void tool_TakeOut_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
ChildWinManagement.LoadMdiForm(this, typeof(FrmTakeOut));
} private void tool_StockSearch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
ChildWinManagement.LoadMdiForm(this, typeof(FrmStockSearch));
}
![复制代码](https://i-blog.csdnimg.cn/blog_migrate/da7051cb50a8e1c446ae34eaadc01af2.gif)
而这个LoadMdiForm的函数,主要判断多文档集合里面是否有对应的对象,没有这创建,有则激活显示即可,代码如下所示。
![复制代码](https://i-blog.csdnimg.cn/blog_migrate/da7051cb50a8e1c446ae34eaadc01af2.gif)
/// <summary> /// 唯一加载某个类型的窗体,如果存在则显示,否则创建。 /// </summary> /// <param name="mainDialog">主窗体对象</param> /// <param name="formType">待显示的窗体类型