Добавить / удалить элемент управления из другой формы - C # - PullRequest
0 голосов
/ 14 февраля 2012

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

    private void button2_Click(object sender, EventArgs e)
    {
        Form1 frm1 = new Form1();
        frm1.Controls.RemoveByKey("button1");
    }

Но это не работает из-за новой инициализации Form1.

Ответы [ 3 ]

1 голос
/ 15 февраля 2012

Из комментариев ясно, что у Form2 нет ссылки на Form1.

Вы не опубликовали никакого кода о том, как вы отображаете Form2, но вот пример того, как это может работатьпередав ссылку через конструктор:

public class Form2 : Form {
  private Form1 _Form1;

  public TestForm(Form1 form1) {
    InitializeComponent();
    _Form1 = form1;   // <- this is the reference from Form1
  }
}

Тогда ваше действие по удалению в Form2 будет выглядеть так:

private void button2_Click(object sender, EventArgs e) {
  _Form1.Controls.RemoveByKey("button1");
}

При создании Form2 из Form1, это пример того, какбудет принято:

private Form2 _Form2;

private void button1_Click(object sender, EventArgs e) {
  _Form2 = new Form2(this);  // <- this is the reference of Form1 you are passing
  _Form2.Show();
}
1 голос
/ 14 февраля 2012

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

Форма 1

private void button1_Click(object sender, EventArgs e)
{
    var form = new Form3 { Owner = this };
    form.Show();
}

private void button2_Click(object sender, EventArgs e)
{
    if(OwnedForms.Length > 0)
    {
        var form = OwnedForms[0];
        //assuming there's a control with id 'One':
        form.Controls.RemoveByKey("One"); 
    }
}
0 голосов
/ 14 февраля 2012

Как вы уже знаете, вам нужен один экземпляр Form1 .
Если это ваша основная форма, и вы использовали мастер Visual Studio для создания приложения Windows Forms , которое выможно посмотреть в Program классе.Обычно создается основная форма.
Теперь вам нужно присвоить выражение new Form1() переменной и назначить его второй форме с помощью кнопки button2 .

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