100分跪求~~~动态加载菜单并能打开窗体,如何实现?

htpower 2007-08-18 06:50:21
菜单名称和指定窗体都放在数据库里
id menuname formurl root
1 系统设置 <null> 0
2 区域设置 SetDistrict 1
3 帮助 <null> 0
2 关于 About 3

菜单通过读取数据库得到这些值如何加入到菜单里
加进去后又要怎么样做才可以使菜单在点击的时候可以弹出指定的窗体呢?

...全文
194 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainbowsoftware 2007-08-19
  • 打赏
  • 举报
回复
学习
lovingkiss 2007-08-19
  • 打赏
  • 举报
回复
这是我程序的代码,实际上就那么两条,加入菜单你已经实现了,现在就剩下反射部分了。

Dim asm As [Assembly] = System.Reflection.Assembly.GetExecutingAssembly()
Dim frm As New Form
'这一步和C#有区别,C#不需要写项目名称的
frm = asm.CreateInstance("项目名称." + 数据库读出来的窗体名称)
frm.show

lovingkiss 2007-08-19
  • 打赏
  • 举报
回复
''' -----------------------------------------------------------------------------
''' <summary>
'''
''' </summary>
''' <param name="NewForm">新窗口的名字</param>
''' <param name="NewWindow">是否打开新窗口,默认激活(该窗口唯一)</param>
''' <param name="MaxWindow">该窗口是否最大化,必须是新增窗口</param>
''' <remarks>
''' </remarks>
''' <history>
''' [蒋玉龙 QQ:66840199] 2006-11-20 Created
''' </history>
''' -----------------------------------------------------------------------------
Private Sub AddWindow(ByVal NewForm As String, Optional ByVal NewWindow As Boolean = False, Optional ByVal MdiMaxWindow As Boolean = True, Optional ByVal ModMaxWindow As Boolean = False)
If LargeImgBar.Buttons.Item(1).Pushed = True Then
'打开模式窗口
Dim asm As [Assembly] = System.Reflection.Assembly.GetExecutingAssembly()
Dim frm As New Form
frm = asm.CreateInstance("LdAsset." + NewForm)
CType(frm, Common).MdiWindow = False '不记录下拉框打开的窗体集合
frm.StartPosition = FormStartPosition.CenterScreen
If ModMaxWindow = True Then frm.WindowState = FormWindowState.Maximized
frm.ShowDialog()
Else
'检查是否已经存在了
Dim II As Long, tempChild As Form
If NewWindow = False Then
For II = 0 To Me.MdiChildren.Length - 1
tempChild = CType(Me.MdiChildren(II), Form)
If tempChild.Name = NewForm Then
tempChild.Focus() : Exit Sub
End If
Next
End If
' 也可以用反射动态加载其他的assembly
Dim asm As [Assembly] = System.Reflection.Assembly.GetExecutingAssembly()
Dim frm As New Form
frm = asm.CreateInstance("LdAsset." + NewForm)
frm.MdiParent = Me
frm.StartPosition = FormStartPosition.WindowsDefaultLocation
CType(frm, Common).MdiWindow = True '记录下拉框打开的窗体集合
If MdiMaxWindow = True Then frm.WindowState = FormWindowState.Maximized
frm.Show()
'根据索引设置列表
End If
End Sub
htpower 2007-08-19
  • 打赏
  • 举报
回复
- -~
谢谢大家好意~我要的是winform的~不是web的
ou108 2007-08-19
  • 打赏
  • 举报
回复
原理
在加进菜单的同时,把菜单单击事件加进去,事件中包含每个菜单所对应的窗体.
在单时转换一下就OK了

ChengKing 2007-08-18
  • 打赏
  • 举报
回复
上面不是有个formurl链接吗, 直接用:
window.open()或<a href=""/> 应该可以.
snto 2007-08-18
  • 打赏
  • 举报
回复
web还是winform?

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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