Как получить доступ к публичным подпрограммам динамически загруженного пользовательского элемента управления на панели - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть панель и кнопка в форме и 2 пользовательских элемента управления. Я динамически загружаю первый пользовательский элемент управления на панели, а затем внутри userControl1. У меня есть метод, к которому я хочу получить доступ при нажатии кнопки в форме изатем измените отображаемый пользовательский элемент управления на userControl2 на панели, как мне это сделать?

код form1:

Public Class form1

    Private Sub form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
           Dim control1 = New UserControl1

           Panel1.Controls.Add(control1)
           control1.Location = New Point(0, 0)
           control1.Size = New Point(1351, 533)
    End Sub

End Class

Код UserControl1:

Public Class UserControl1

    Public Sub doSomething()
           'Do something'
    End Sub

End Class

1 Ответ

0 голосов
/ 30 сентября 2018

Хорошо, я возьму из вашего вопроса столько, сколько смогу, и покажу вам пример, есть много разных способов, которыми вы могли бы сделать это, таким образом, может не ответить на ваш вопрос на 100%, но даст вам достаточно, чтобы получить то, чтовы хотите.

Я предполагаю, что у вас есть только один элемент управления 1 и один элемент управления 2.

Мой пример будет чередоваться и обращаться к подпрограмме в активном (показанном) пользовательском контроле на каждомнажмите на кнопку основной формы.

В модуль я бы положил:

Public control1 As New UserControl1
Public control2 As New UserControl2

В UserControl1 положить:

Public Sub DoSomething()
    Me.BackColor = Color.Black
End Sub

В UserControl2 положить:

Public Sub DoSomething()
    Me.BackColor = Color.White
End Sub

В вашем событии FormLoad вставьте:

    control1.Location = New Point(0, 0)
    control1.Size = New Point(1351, 533)
    Panel1.Controls.Add(control1)

В вашем событии нажатия Button1 положите:

    Select Case Panel1.Contains(control1)
        Case True
            'Remove UserControl1 - Add UserControl2
            Panel1.Controls.Remove(control1)
            control2.Location = New Point(0, 0)
            control2.Size = New Point(1351, 533)
            Panel1.Controls.Add(control2)
            control2.DoSomething()
        Case False
            'Remove UserControl2 - Add UserControl1
            Panel1.Controls.Remove(control2)
            control1.Location = New Point(0, 0)
            control1.Size = New Point(1351, 533)
            Panel1.Controls.Add(control1)
            control1.DoSomething()
    End Select

Выше проверяется, какой UserControl находится на панели, и чередует его ивызывая «DoSomething».Это просто пример, чтобы дать вам идею.То, что вы хотите, может отличаться, у вас может быть кнопка во втором пользовательском элементе управления, и если да, измените код переключателя, чтобы он подходил.

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