Добавление и удаление динамических элементов управления Windows Forms с использованием C # - PullRequest
1 голос
/ 22 апреля 2010

У меня есть три вкладки в форме Windows Forms. В зависимости от выбранного RadioButton в TabPages[0], я добавил несколько динамических элементов управления на соответствующей вкладке. В событии Button_Click элементы управления добавляются, но проблема в том, что я не могу удалить динамически добавленные элементы управления из другой (неактуальной) TabPage.

Вот мой код:

Label label235 = new Label();
TextBox tbMax = new TextBox();
label235.Name = "label235";
tbMax.Name = "txtBoxNoiseMax";
label235.Text = "Noise";
tbMax.ReadOnly = true;
label235.ForeColor = System.Drawing.Color.Blue;
tbMax.BackColor = System.Drawing.Color.White;
label235.Size = new Size(74, 13);
tbMax.Size = new Size(85, 20);

if (radioButton1.Checked)
{
    label235.Location = new Point(8, 476);
    tbMax.Location = new Point(138, 473);

    tabControl.TabPages[1].Controls.Add(label235);
    tabControl.TabPages[1].Controls.Add(tbMax);

    tabControl.TabPages[2].Controls.RemoveByKey("label235");
    tabControl.TabPages[2].Controls.RemoveByKey("tbMax");
}
else
{
    label235.Location = new Point(8, 538);
    tbMax.Location = new Point(138, 535);

    tabControl.TabPages[1].Controls.RemoveByKey("label235");
    tabControl.TabPages[1].Controls.RemoveByKey("tbMax");

    tabControl.TabPages[2].Controls.Add(label235);
    tabControl.TabPages[2].Controls.Add(tbMax);
}

Где я делаю эту ошибку?

Ответы [ 2 ]

1 голос
/ 22 апреля 2010

Прежде всего, имя tbMax - это не "tbMax", а "txtBoxNoiseMax". Так что, во-первых, он не сможет найти TextBox на RemoveByKey.

Каждый раз вы создаете новые элементы управления.

0 голосов
/ 22 апреля 2010

Как уже упоминалось, lc:

Вы назвали свою переменную TextBox tbMax, но дали ей имя txtBoxNoiseMax . Если вы посмотрите на описание RemoveByKey , вы увидите, что оно работает со свойством Name . Таким образом, вы должны изменить

tbMax.Name = "txtBoxNoiseMax";

в

tbMax.Name = "tbMax";
...