Member 13526683 Ответов: 1

Добавление пользовательского элемента управления в контейнер


Я использую Microsoft Visual Studio для создания приложения Windows Form. **Я не знаю, как мне следует добавлять свои пользовательские элементы управления в свою форму.** я видел много примеров того, как вы можете это сделать, но мне еще предстоит найти ответ, который учитывает производительность, по крайней мере, это то, во что я верю.

Здесь приведены два метода, которые я использовал:

1. **UserControl.Visible = True / False**

Один из наиболее распространенных методов, которые я видел, - это поместить пользовательский элемент управления в форму и установить видимость в False. Всякий раз, когда пользовательский элемент управления должен быть видимым, вы просто устанавливаете Visible в True. Я лично считаю, что это очень плохой способ обработки пользовательских элементов управления. Это может стать очень дезориентирующим, когда у вас есть много элементов управления в вашей форме. *Это метод, которым меня учили пользоваться.*

Код может выглядеть примерно так:

' User Control is already placed in the Form and Visibility is set to False
    Public Class Form_Main

        ' Button to make User Control Visible
        Private Sub Button_Visible_Click(sender As Object, e As EventArgs) Handles Button_Visible.Click
            UserControl_1.Visible = True
        End Sub

    End Class



2. **Динамическая Загрузка Пользовательского Элемента Управления ""**
Динамическая загрузка пользовательского элемента управления подразумевает, что я добавляю его в контейнер (панель и т. д.)

Код может выглядеть примерно так:

Public Class Form_Main

        ' Instance User Control
        Public Shared UC_Main As New UserControl_Main
    
        ' On Form Load
        Private Sub Form_Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            ' Add Main Menu Control
            Panel_Container.Controls.Add(UC_Main)
    
        End Sub

    End Class


**Вопрос о производительности и методе**

Какие методы добавления и удаления пользовательских элементов управления наиболее эффективны с точки зрения производительности?

Что я уже пробовал:

Я попробовал обе вышеперечисленные альтернативы, но все еще не знаю, как мне это сделать.

1 Ответов

Рейтинг:
4

Ralf Meier

Нет никакого общего способа ответить на ваш вопрос.
В основном :
Элемент управления, являющийся частью вашей формы или частью элемента управления на вашей форме (например, панель), в конечном счете принадлежит форме (панель принадлежит форме, а элемент управления принадлежит панели).
Таким образом, нет никакой разницы в эффективности .. за исключением того, что панель-это ContainerControl, который может выполнять общую функциональность для вас (если вы переключите панель на Visible=False, то все включенные элементы управления также станут невидимыми. То же самое поведение имеет ваш UserControl (потому что это также ContainerControl).

Если вам нужен элемент управления на вашей форме, вы должны разместить его там. Если вам нужен элемент управления в зависимости от состояния, вы делаете его видимым или невидимым (с его свойством) или пригодным для использования с включенным.
Динамически созданный элемент управления является хорошим выбором, если вы хотите иметь (например) элементы управления в зависимости от различных настроек (ввод в текстовое поле). Эти элементы управления будут созданы и добавлены в коллекцию элементов управления контейнера, когда это необходимо (и обычно не помещаются).

Чтобы дать вам совет (для меня), необходимо иметь больше информации о вашей проблеме ...