Я пытаюсь создать приложение VB.Net, управляемое базой данных, которое извлекает список зарегистрированных учетных записей из базы данных и отображает имена пользователей учетных записей в меню, чтобы пользователь мог выбрать одну и открыть новую форму (где они работать с ним).
у меня есть конструктор для родительского окна 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 не любит передачу данных, это не работает ...
Я смотрел на делегаты и выражения ленд, но не думаю, что кто-либо из них делает то, что мне нужно, другой вариант - сделать мой собственный подкласс класса ContextMenuStrip, который 1) обрабатывает щелчки так, как я хочу и 2) звучит как кошмар.
Прежде чем я приступлю к тому, что, по моему мнению, будет адской работой, я что-то упустил? это простой способ сделать то, что я хочу сделать? или, если нет, будет работать подклассификация ContextMenuStrip, и если нет каких-либо идей относительно того, что будет (и если будет, какие-либо идеи относительно того, как начать изучать, как это сделать)