VB.Net中的动态数据库驱动菜单
我正在尝试构建一个数据库驱动的VB.Net应用程序,它从数据库中提取一个注册帐户列表,并在菜单中显示throes帐户的用户名,这样用户就可以选择一个并打开一个新表单(在那里他们使用它) 到目前为止,我拥有的是MDI父窗口的构造函数VB.Net中的动态数据库驱动菜单,vb.net,dynamic,menu,address-operator,Vb.net,Dynamic,Menu,Address Operator,我正在尝试构建一个数据库驱动的VB.Net应用程序,它从数据库中提取一个注册帐户列表,并在菜单中显示throes帐户的用户名,这样用户就可以选择一个并打开一个新表单(在那里他们使用它) 到目前为止,我拥有的是MDI父窗口的构造函数 Public Sub New() InitializeComponent() Dim tsmi As New ToolStripMenuItem("Users", Nothing, AddressOf users_mousedown) Me
Public Sub New()
InitializeComponent()
Dim tsmi As New ToolStripMenuItem("Users", Nothing, AddressOf users_mousedown)
MenuStrip1.Items.Add(tsmi)
End Sub
用户菜单(其中SQLite\u db
是一个处理数据库的类,user\u class
是一个包含两项(用户名和密码)作为字符串的类
Sub users_mousedown()
Dim submenu As New ContextMenuStrip
Dim database As New SQLite_db
Dim user_list As New List(Of user_class)
user_list = database.List_Users
For Each user As user_class In user_list
submenu.Items.Add(user.username, Nothing, AddressOf Open_new_window(user))
Next
submenu.Items.Add("Add new user", Nothing, AddressOf AddNew)
submenu.Show(Control.MousePosition)
End Sub
我想发生的是,当用户单击上下文菜单时,将创建一个新的MDI子窗体,并传递用户中的数据,但是由于AddressOf不喜欢传递数据,因此这不起作用
我看过委托和landa表达式,但认为它们都不是我所需要的,另一个选择是创建我自己的ContextMenuStrip类的子类,该类1)以我想要的方式处理单击,2)听起来像一场噩梦
在我开始我认为会有很多工作之前,我是不是错过了什么?他们是做我想做的事的简单方法吗?或者,如果没有,对ContextMenuStrip进行子分类是否可行,如果没有任何关于将要做什么的想法(如果可以,还有关于如何开始学习如何做的想法)封装用户信息的一种简单方法是使用Helper类,您可以在其中存储上下文信息
Public Class Question1739163
Class HelperUserCall
Public userId As String
Sub New(ByVal id As String)
userId = id
End Sub
Public Sub OnClick()
MsgBox(Me.userId)
End Sub
End Class
Private Sub Question1739163_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim t As New ToolStripMenuItem("Users", Nothing, AddressOf user_mousedown)
MenuStrip1.Items.Add(t)
End Sub
Public Sub user_mousedown()
Dim s As New ContextMenuStrip
Dim a As HelperUserCall
a = New HelperUserCall("u1")
s.Items.Add(a.userId, Nothing, AddressOf a.OnClick)
a = New HelperUserCall("u2")
s.Items.Add(a.userId, Nothing, AddressOf a.OnClick)
s.Items.Add("New User", Nothing, AddressOf add_new)
s.Show(Control.MousePosition)
End Sub
Sub add_new()
MsgBox("add new")
End Sub
End Class
您可以改进helper类,在构造函数中添加对数据库的引用,并在用户单击该选项时检索用户信息。aha,谢谢,今晚(英国时间)我将试一试