MDI父子窗体相互传值的问题在网上已经能找到很多了,但是有关父窗体控制子窗体的文章不是很多。方法其实相比较父子窗体的传值并不难,也许许多大虾们感觉太简单没有写出来,本人作为菜鸟总结出来,以便给同样是菜鸟的同学学习。
其实父窗体调用子窗体对于Winform应用程序开发、系统开发以及CAD系统的开发的作用是比较大的。本人主要从事水工CAD系统的开发工作,在这个过程中就会遇到很多这样的问题。如:菜单栏下的保存共能、工具栏上视图的放大缩小等等。
调用的方法主要分为两个步骤:
(1)查找当前活动的子窗口
在c#中给我们提供了很好的方法,其中也比较多,本人采用的是在已知子窗体条件下直接进行判断(大家也可以采用循环的方式逐个搜索,这的方法的在网上也同样很多,在此不多说了),代码如下:
Form childForm = this.ActiveMdiChild;
if (childForm is _3DModule.WRSDam3DForm)
{
}
(2)将活动的子窗口指向当前活动的子窗口,如下
_3DModule.WRSDam3DForm WRSForm = (_3DModule.WRSDam3DForm)childForm;//将活动的子窗体指向当前活动的窗体
WRSForm.WRSUserControl.ZoomIn();
我这个实现的视图的放大的功能,其中_3DModule.WRSDam3DForm是一个窗体。
整体的代码如下: