一个Dlg主窗体,其他的dlg都是非主窗体,如何在使在主窗体的全局变量能被其他的窗体访问啊?
主窗体的类好像没有任何的类的实例变量的,不知道怎么可以让其他的窗体访问的! 问题点数:13、回复次数:14Top
1 楼conghui(万物苏醒)回复于 2003-08-04 09:01:59 得分 0
可在其他的非主窗体中,为该主窗体创建一个实例对象,用该对象即可访问.Top
2 楼snof(雪狼)回复于 2003-08-04 09:03:46 得分 13
把它定义成public static,
如:
public static string s;Top
3 楼ATLSurvival(花开花落两不知)回复于 2003-08-04 09:34:45 得分 0
conghui(聪慧),如果有10个非主窗体,那么不是重复,重复,再重复的创建了10遍么?
这10遍,在内存里面,都还是一个实例变量,还是10个实例变量啊?
如果是10个实例变量了,这个办法就是不可行的了!Top
4 楼ddy2000(梦归自然)回复于 2003-08-04 09:42:35 得分 0
upTop
5 楼ddy2000(梦归自然)回复于 2003-08-04 09:47:36 得分 0
定义一个静态的管理类,程序启动后保存主dlg对象,以后在其他窗体中使用Top
6 楼ATLSurvival(花开花落两不知)回复于 2003-08-04 09:50:07 得分 0
ddy2000(梦归自然),这样太抽象了,能不能具体一点啊?Top
7 楼xlove(求田问舍)回复于 2003-08-04 10:34:13 得分 0
up snofTop
8 楼ATLSurvival(花开花落两不知)回复于 2003-08-04 11:27:53 得分 0
up
gzTop
9 楼dqdan(小强)回复于 2003-08-04 15:36:16 得分 0
在每个非主体的窗口中建立一个主体窗口的对象,在创建非主体窗口时初始化该对象。
例如:
Class MainForm
{
...
//初始化非主体 窗口
Form1 TestForm = new Form1(this);
}
Class Form1
{
private MainForm m_MainForm = null;
public Form1(MainForm mainForm)
{
m_MainForm = mainForm;
}
}Top
10 楼zhongwanli(㊣【为了老婆,二次重构____然后升★★】㊣)回复于 2003-08-04 15:52:41 得分 0
这个吗,不难,有两方法
一。主窗体类初始化的
from1 f1= new form1();
f1.要访问的变量(在form1类中用public 关键字定义的)
二。主窗体类未初始化的
f1.要访问的变量(在form1类中用public static 关键字定义的)Top
11 楼ATLSurvival(花开花落两不知)回复于 2003-08-05 09:18:44 得分 0
奇怪,我这样了,在总的名字空间加了一个类
class ShareData
{
public static string aa = "tttt";
public static int bb = 1;
...
};
在其他的地方可以用
ShareData.aa
why?
类ShareData还没有实例化(没有New一下子的啊),怎么可以类名dot域成员名字啊?
这在C++里面是绝对错误的啊?Top
12 楼dqdan(小强)回复于 2003-08-05 09:37:10 得分 0
你使用的是静态的成员变量,使用静态的东西是不需要开辟空间的!
使用静态:类名.方法或属性
非静态:对象名称.方法或属性
Top
13 楼ATLSurvival(花开花落两不知)回复于 2003-08-05 09:46:31 得分 0
还是小强(好熟悉?),比较通俗一点啊!Top
14 楼cygroup()回复于 2003-08-05 10:19:30 得分 0
这样行不行:在非主窗口类中加一个公共方法例如SetMainFrame(MainFrame form),其中MainFrame为主窗口类名称,然后在主窗口中创建非主窗口类的实例时,调用该方法,并将主窗口的this引用传递过去,这样可能会比较好,因为在非主窗口类的实例中再创建主窗口的实例毕竟还是与启动时创建的主窗口实例不同的。Top




