2009-11-15 45 views
0

我想構建一個數據庫驅動的VB.Net應用程序,它從數據庫中提取已註冊帳戶的列表,並在菜單中顯示throes帳戶的用戶名,以便用戶可以選擇一個並打開一個新的表單(他們在哪裏工作)。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不喜歡通過數據這不起作用...

我看過代表和landa表達式,但不認爲他們任何一個做我所需要的,另一種選擇是讓我自己的ContextMenuStrip類的子類,它1)以我想要的方式處理點擊,2)聽起來像一場噩夢。

在我開始進入我認爲會是很多工作的地獄之前,我是否錯過了一些東西?是他們做我想做的事的簡單方法嗎?或者如果沒有的話,子分類的ContextMenuStrip的工作,如果沒有任何想法,將(將是否會,如何開始學習如何做到這一點的任何想法)

回答

2

封裝用戶信息的簡單方法是一個助手類,您可以在其中存儲上下文信息。


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 

您能提高輔助類添加構造函數中的參考數據庫,檢索用戶信息,當用戶點擊進入該選項。

+0

aha,謝謝今晚我會給你一個鏡頭(英國時間) – 2009-11-16 09:51:41