Динамическое управление в c # - PullRequest
2 голосов
/ 13 января 2009

Я хочу создать вид матрицы 4 x 3 с текстовыми полями и флажками. Независимо от того, является ли элемент флажком или текстовым полем, зависит от значений в базе данных. Какой лучший способ начать?

// something like this but I need to fill in each elements of the matrix...
  private void CreateSpecificControl(string requestedType)
        {
                if (requestedType == "CheckBox")
                {

                    CheckBox control1 = new CheckBox();

                    control1.Click += new EventHandler(chk_CheckedChanged);

                   //TableLayout panel
                    layout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25));
                    layout.Controls.Add(control1);

                }
                else
                {
                    Label control1 = new Label();

                    control1.Text = "Not a checkbox";
                    layout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25));
                    layout.Controls.Add(control1);

                }

        }

1 Ответ

1 голос
/ 13 января 2009

Использовать пользовательский контроль. Смотрите этот учебник .

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

myUserControl.Controls.Add(new CheckBox());

Аналогичным образом элементы могут быть удалены из этой коллекции, что обеспечивает динамическое поведение.

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