Как обрабатывать события из нескольких форм одного класса - PullRequest
0 голосов
/ 15 апреля 2019

Я создаю несколько подформ, каждый из того же класса, из моей родительской формы. Каждая из подчиненных форм определяет событие, которое должно привести к тому, что родительская форма создаст новую подчиненную форму другого класса. - Однако обрабатывать события могут только последние созданные формы.

Считая, что это потому, что я повторно использовал ссылку на подформу, я сохраняю каждую из подчиненных форм в связанном списке типа подчиненной формы.

Код SubForm.

Public Class UserEditor
Property ID As Integer
Public Event EditGroup(ByRef group As GroupPrincipal, ByVal newWindow As Boolean, ByVal Source As Integer)

Public Sub New(ByVal U As UserPrincipal, ByVal theId As Integer)
    InitializeComponent()
    ID = theId
    UserEditor1.DisplayUserPrincipal(U)
End Sub

Private Sub UserEditor1_GroupEdit(ByRef groupItem As GroupListItem) Handles UserEditor1.GroupEdit
    RaiseEvent EditGroup(groupItem.Grp, False, ID)
End Sub

Код в родительской форме

Public Class ASADManager
Dim WithEvents UserEditorInstance As UserEditor
Dim WithEvents UserEditorList As New List(Of UserEditor)

Этот код срабатывает при выборе листового объекта в отображаемом списке.

If TypeOf leafObject Is UserPrincipal Then
                    UserEditorInstance = New UserEditor(currentLeaf.Principal, UserEditorList.Count) With {
                        .Text = currentLeaf.SamAccountName
                    }
                    UserEditorInstance.Show()
                    UserEditorInstance.Activate()
                    UserEditorList.Add(UserEditorInstance)
End If


Private Sub EditGroup(ByRef grp As GroupPrincipal, newWindow As Boolean, Source As Integer) Handles UserEditorInstance.EditGroup
    If Not newWindow Then
        Dim GEdit As New GroupEditorForm(grp) With {
            .Text = grp.Name
        }
        GEdit.Show()
    End If
End Sub

Все работает нормально в последнем открытом UserEditorInstance, оно захватывает и повторно генерирует событие, и это является причиной родительского элемента, который открывает форму GroupEditor.

Однако, если я выберу 2-й LeafObject (чтобы открыть другое окно UserEditor), его события будут перехвачены, а не предыдущие.

Как мне поймать обоих?

Надеюсь, это объяснение прояснит, что я делаю (и делаю неправильно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...