最近开始了一个winform项目,原先一直都是web项目。遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操作区域的效果。中间区域要想控制左侧导航或者顶部导航都是困难的,因为这时没有激活左侧窗体,操作顶部相对容易,因为顶部是父窗体,子窗体操作父窗体的例子很多,百度一下。我之前也写过一篇:winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体。
同样是子窗体相互操作起来挺困难,可以通过设置一个static静态变量,在加载某一窗体前把form作为object赋值给这个变量,在需要操作的地方调用。
具体如下:
我项目中有个公共类叫cSys
定义static变量:public static object currentLeftMainForm = null;
左侧的窗体是leftInItem,打开到了左侧的panel里,在打开时加入下面的代码:cSys.currentLeftMainForm = objleft;
objleft是leftInItem定义的,如:leftInItem objleft = new leftInItem();
这时currentLeftMainForm 就一直是激活状态,在需要操作左侧的时候就可以直接调用了,
如:leftInItem cleft = (leftInItem)cSys.currentLeftMainForm;
相应的操作示例:cleft.setCurrentButton("btnInItemList");
setCurrentButton是在leftInItem中定义的方法。
这样就轻松实现了同级窗体的互操作。
原帖地址:winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法
bubufx提供,禁止转载。