【发布时间】:2015-10-28 12:21:51
【问题描述】:
我有一个名为 TopicBar 的第三方控件,它看起来像你可以在窗口左侧看到的 windows xp 导航栏
在我的应用程序中,我有 71 个表单,我创建了一个数据库表来存储我的所有表单 Name 和 Text,特定用户可以添加哪些表单(通过搜索我已经存储在表中的表单名称) 应作为项目添加到主题栏中。
例如,一个名为 FrmBill 的表单,它的名称是 Bill,一旦用户将 Bill 添加到 Topicbar,它将成功创建一个名为 Bill 的项目,现在我面临的是我需要在该用户单击时打开表单 FrmBill在主题栏中的账单项上
我可以获取表单名称,即 FrmBill 是用户在 Bill 中点击,但我无法打开表单,因为我需要在此处动态创建实例或调用表单 frmBill
到目前为止我做了什么
Dim formName As String
Dim frm As Form
Using conn As New SqlConnection(conn_str)
conn.Open()
Dim cmd As SqlCommand
cmd = New SqlCommand("", conn)
cmd.CommandText = "select top 1 formname from winforms where id=" & winformid & ""
formName = cmd.ExecuteScalar
'output: FrmBill
frm = New Form
frm.Name = formName '(FrmBill)
With frm
.MdiParent = FrmMain
.Show()
.Focus()
End With
End Using
注意:在这个函数中,我可以从数据库中获取表单名称,即FrmBill,但它没有显示实际的表单FrmBill
那么无论如何都要像下面这样声明表单名称
dim frm as new "& formname &"
【问题讨论】:
-
我猜你可以使用
select case,但它有点复杂。您需要创建 71 个案例才能在您的代码中工作 -
我相信,为了实现您正在寻找的内容,您必须使用dictionary 或类似于实际存储表单本身(或至少它们的实例)。然后你必须从它的名字中获取表格(这将是字典中的键)并调用
.Show()。 -
离题:应该评论否决投票的原因
-
@VisualVincent 我需要像
DicForms.Add("FrmBill", FrmBill)这样在我的字典中添加 71 个表单,对吗? -
是的。你是对的。