【发布时间】:2009-11-15 22:52:06
【问题描述】:
我正在尝试构建一个数据库驱动的 VB.Net 应用程序,该应用程序从数据库中提取注册帐户列表并在菜单中显示 throes 帐户的用户名,因此用户可以选择一个并打开一个新表单(他们使用它)。
到目前为止,我所拥有的是 MDI 父窗口的构造函数
Public Sub New()
InitializeComponent()
Dim tsmi As New ToolStripMenuItem("Users", Nothing, AddressOf users_mousedown)
MenuStrip1.Items.Add(tsmi)
End Sub
用户菜单的处理程序(其中SQLite_db 是一个管理数据库的类,user_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 是否会起作用,如果没有关于什么会起作用的任何想法(如果会,关于如何开始学习如何做到这一点的任何想法)
【问题讨论】:
标签: vb.net dynamic menu address-operator