如何调用不确定窗体,还请指教,非常感谢!祝您圣诞快乐!

trier2003 2004-12-23 09:36:33
我想做一个功能树,点击的时候打开不同的窗体。这个功能树是动态的,就是不同权限的人出现的节点不一样,如何将节点标识与不同的窗体关联起来,点击的时候打开正确的窗体!

还请指教,非常感谢!
...全文
116 点赞 收藏 23
写回复
23 条回复
marvelstack 2004年12月23日
继承TreeNode,在子类中包含一个Form和一个使用权限变量。
回复 点赞
trier2003 2004年12月23日
顶,看中午有没有答案
回复 点赞
rijing2000 2004年12月23日
http://dev.csdn.net/develop/article/46/46182.shtm
建议看看这一篇!相信你的问题会解决掉。
回复 点赞
trier2003 2004年12月23日
焦急等待中呀1
回复 点赞
Leevy 2004年12月23日
没有,学习ing...
回复 点赞
北京的雾霾天 2004年12月23日
参见
Assembly.CreateInstance 方法

[C#]
public object CreateInstance(
string typeName
);
回复 点赞
trier2003 2004年12月23日
顶!
谁有这样的源代码,圣诞高分奉送!
回复 点赞
兔子党-顾问 2004年12月23日
生蛋快乐。不会。顶。
回复 点赞
trier2003 2004年12月23日
顶!不要沉呀!
回复 点赞
trier2003 2004年12月23日
楼上们说的不错,不知道反射怎么做,能不能给个例子!
还有我想把窗体作为一个实例来处理,例如
private static volatile FunctionManage instance=null;
public static FunctionManage Instance
{
get
{
if(null==instance)
{
lock(typeof(FunctionManage))
{
if(null==instance)
{
instance=new FunctionManage();
}
}
}

return instance;
}
}
不知道各位有没有相关的经验!
回复 点赞
Alden 2004年12月23日
学习学习.
回复 点赞
跋涉者 2004年12月23日
看看这段我写的vb代码对你有没有帮助.
Dim args As Object()
'Dim a As [Assembly]
'怎样获取本程序序的AssemlyFullName呢?
Dim bf As BindingFlags = BindingFlags.GetProperty Or BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public Or BindingFlags.Static
Dim tForm As Type = Type.GetType("YourAssemblyName" + sClassName)
'sClassName 是个字符串,就是设置成你的窗体名了,你可以动态更改的啊
If (Not oCurrentWindowsForm Is Nothing) Then
oCurrentWindowsForm.Close()
End If
oCurrentWindowsForm = CType(tForm.InvokeMember("DefInstance", BindingFlags.GetProperty Or bf, Nothing, Nothing, args), cCaseHistoryBaseForm)
oCurrentWindowsForm.WindowState = FormWindowState.Maximized
oCurrentWindowsForm.Show()
oCurrentWindowsForm.Activate()
回复 点赞
hujiiori 2004年12月23日
treeNode.tag存放相关窗体的标识
回复 点赞
brightheroes 2004年12月23日
节点不是有Tag属性吗?
把你的窗体的类的名称给到Tag上面
然后
用楼上说的办法来处理
回复 点赞
跋涉者 2004年12月23日
用反射
在功能树上保存要打开的窗体的类名.
在处理树节点点击事件的时候用反射来实现.
回复 点赞
trier2003 2004年12月23日
圣诞快乐,帮我解决一下燃眉之急呀!
回复 点赞
haoztao 2004年12月23日
帮你顶!
回复 点赞
an_andy 2004年12月23日
顶....
圣诞快乐
回复 点赞
trier2003 2004年12月23日
谢谢各位,尤其是hatita,hbxtlhx,noeye.大致原理我明白了,也作出来了!不过我还有一点想法;
1.在实际的开发过程中是不是要把节点标识成一定规则,或者说和窗体类名称一样!
2.通常情况下要加载的不是一个Assembly,他们的名称空间也不一定相同,需要对这个灵活处理!
3.对与右键,Botton这样的控件如果控制权限,通常是将这样的控件不可见,该如果处理!
4.通常权限是在登陆的时候加载的,对于每一个窗体调用不应该再和服务器进行交互进行权限验证!

这只是我个人的想法和准备努力做的工作,还请各位一起学习,指导!如果我能够完成这样的工作会和大家共享!
祝大家圣诞快乐!
回复 点赞
hatita 2004年12月23日
空手打得,上面错了,抱歉。
Type t = Type.GetType("WindowsApplication.Form1");
object objForm = System.Activator.CreateInstance(t);
Form form = (Form)objForm;
form.Show();
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告