C # пользовательские элементы управления - PullRequest
1 голос
/ 08 июля 2010

Как добавить элементы управления в родительский элемент управления. Я использую приложение C # для Windows.

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

Ответы [ 2 ]

3 голосов
/ 08 июля 2010

Хотите добавить элементы управления с помощью кода (программно) или с помощью дизайнера?

Если вы хотите добавить элемент управления в групповую коробку, панель или другой контейнер, сначала вы создаете элемент управления:

Label myLabel = new Label();
myLabel.Name = "Name";
myLabel.Text = "Example";
myLabel.Location = new Point(10, 10);

Затем добавьте его в контейнер, используя свойство Controls контейнера, с помощью метода add:

myGroupBox.Controls.Add(myLabel);

Наконец, вы можете использовать состояние вашего флажка для включения / выключения всегоконтейнер (и все его дочерние элементы управления).Возможно, вы захотите где-нибудь использовать логическое значение, но это основная идея:

В событии CheckChanged для вашего флажка сделайте следующее:

myGroupBox.Enabled = myCheckBox.Checked;

Или наоборот, в зависимости от того, как выхотите включить состояние.

РЕДАКТИРОВАТЬ:

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

public void AddControl(Control controlToAdd)
{
    myGroupBox.Controls.Add(controlToAdd);
}

По существу, подвергая Controls.Add контейнера пользовательского элемента управления коду, который взаимодействует с вашим пользовательским элементом управления.

Я надеюсь, что этополезно.

РЕДАКТИРОВАТЬ 2:

Вот код, который вы отправили в комментарии:

foreach(Control ctrl in this.groupbox1.Controls)
{
    if (ctrl != this.checkbox1)
    {
        ctrl.Enabled = this.checkbox1.Checked;
    }
}

Это перебирает все элементы управления, ивключает или отключает все из них, кроме checkbox1, в зависимости от состояния checkbox1.

Во-первых, если checkbox1 не является дочерним элементом управления в groupbox1, нет необходимости в операторе if, который гарантирует, что текущий элемент управления не является флажок1.Этого никогда не будет, потому что foreach выполняет только итерации дочерних элементов управления groupbox1.Пока checkbox1 находится за пределами groupbox1, он не включается в итерацию.

Во-вторых, его намного быстрее и проще поддерживать, если просто включить или отключить весь групповой ящик.Все элементы управления в нем будут наследовать включенное / отключенное состояние.Используя ваши контрольные имена, код будет:

groupbox1.Enabled = checkbox1.Checked;

Надеюсь, я правильно понимаю ваш вопрос.

1 голос
/ 07 сентября 2013

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

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