Form1为主窗体,Form2,3,4为子窗体.
我目前的方法是Form2,3,4各有一个Form1的指针变量,在构造时就把Form1的指针传给它们.但是Form1的各属性,数据,控件都是private的.如果要全改成public安全性不好.如果在Form1中定义一堆获取数据,控件指针的函数会大大增加代码量,因为数据交换毕竟太多了.
有什么两全的办法么?谢谢!
我目前的方法是Form2,3,4各有一个Form1的指针变量,在构造时就把Form1的指针传给它们.但是Form1的各属性,数据,控件都是private的.如果要全改成public安全性不好.如果在Form1中定义一堆获取数据,控件指针的函数会大大增加代码量,因为数据交换毕竟太多了.
有什么两全的办法么?谢谢!
比如
public void callform2(string var1)
{
//你的处理语句
form2.show();
}试试吧,我也不知道这个方法好不好。
如果是ShowDialog的话,应该窗体是有主次之分的,可以在子窗体写一个public方法(建议除了这个方法,其他的都不要声明为public的),并使用DialogResult为返回值,其中加一个引用传递的参数,该参数为一个类,类你自己定,能够包含所要的信息即可,类似于EventArgs这种。
如果是直接Show的窗体,往往需要子窗体增加事件,进行了什么操作可以直接通知主窗体,让主窗体更新界面,并且主窗体要使用子窗体的Closed事件,确保时刻了解子窗体是否已关闭。
{
public static int num;
public static string str;
........................
}
各窗口可以通过这个来传递参数。dataHelper.num dataHelper.str
public void ShowMe(ref string arg1,ref string arg2...)
{
//预处理
this.Show();
//或this.ShowDialog();
//后续处理
}
必要的话处理子窗体的Closing事件。此方法未经验证,仅供参数。
如果子窗体是Show()的话,应该在主窗体中处理
如果子窗体是ShowDialog(),在哪儿处理不是问题,注意设置DialogResult的值就行了。
││博客空间:http://blog.csdn.net/lovingkiss
││资源下载:http://download.csdn.net/user/lovingkiss
││Email:loving-kiss@163.com [MSN也是这个]
││联系方式:Q66840199 项目、聊天、咨询、探讨、统统收费,呵呵......
╚---------------------------------------------------------------------------------------------------------ō*︻$▅▆▇◤