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

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

还请指教,非常感谢!
...全文
155 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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();
加载更多回复(3)

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧