2009-11-15 4 views
0

데이터베이스에서 등록 된 계정 목록을 가져오고 메뉴에 throes 계정의 사용자 이름을 표시하는 VB.Net 앱 구동 데이터베이스를 구성하려고하므로 사용자가 하나를 선택할 수 있습니다. 새로운 양식이 열려 있습니다 (어디서 작업하는지).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 클래스는 사용자 메뉴 (의 핸들러는 두 개의 항목 클래스 (사용자가 새 MDI 자식 폼이 생성 상황에 맞는 메뉴를 클릭하고 사용자의 데이터가 전달 될 때 문자열로 사용자 이름 및 암호).

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 

은 내가 어떻게 할 것은, 그러나 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

아하, 감사합니다. 오늘 밤에 그 사진을 찍을 것입니다 (영국 시간). –