新手请教:子窗口如何改变父窗口控件的属性?--在线等待
我再父窗口定义了一个menuItem1,并设置enabled = false;
我想再子窗口中再设定它为true.
怎么调用呀
问题点数:20、回复次数:5Top
1 楼TheAres(班门斧)回复于 2003-07-03 10:00:49 得分 0
先找到(一般用预先保存的方法)父窗体的实例,然后通过这个实例找到menuItem1Top
2 楼daemonking(daemonking)回复于 2003-07-03 10:07:38 得分 0
把menuIteml的属性访问属性为public,反正不能够是private,然后FrmParent.menuIteml,
不过这样子做不好,最好还是用一个属性或者方法去设置enabled的值,Top
3 楼zhongjy001(阿宇)回复于 2003-07-03 10:23:50 得分 10
在父窗体定义一个静态公用属性
public static bool menuItem1Enabled
{
set
{
menuItem1.Enabled=value;
}
get
{
return menuItem1.Enabled;
}
}
这样你就可以直接在子窗体里调用了,而且不用实例化。
父窗体.menuItem1Enabled=true or false
如果要控制多个menuItem的属性,你可以将其序列化。Top
4 楼mwpg79(^_^大海无量)回复于 2003-07-03 10:33:56 得分 10
楼上的这种方法不行,静态函数是属于class的,不是属于实例的,你的menuItem1没有指明是属于那个实例引用,编译是会出错的。
遇到这种问题,我一般在创建子窗体时,把父窗体的实例引用传给子窗体保存,然后把父窗体中的相关控件的属性改为public,或是提供public的方法,就可以随时在子窗体中修改属性或是通过调用父窗体的public方法来达到修改属性的目的,推荐后者,封装性好些
Top
5 楼mwpg79(^_^大海无量)回复于 2003-07-03 10:35:31 得分 0
To zhongjy001(.):
sorry,我看漏了你的第一句话,你的方法也是可行的。不好意思
Top




