Можем ли мы добавить некоторые функции в winform во время выполнения? - PullRequest
1 голос
/ 28 февраля 2012

У меня есть основная родительская форма win, в которой я реализовал некоторые функции и у которой есть несколько дочерних окон.Теперь я хочу, чтобы реализованная мною функциональность работала и на дочерних окнах.

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

Примечание. Изображение, перемещающееся в родительском окне, должно отключиться и должно отображаться только в диалоге открытия или дочернем окне.

Пожалуйста, предложите, если это возможно.

1 Ответ

3 голосов
/ 28 февраля 2012

Попробуйте использовать события.

Создать событие для родительской формы с именем ImageMoved.

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

Множество разных способов сделать это. Простой пример:

public partial class Form1 : Form {
  public event EventHandler ImageMoved;

  private void OnImageMoved() {
    if (ImageMoved != null)
      ImageMoved(this, new EventArgs());
  }

  private void button1_Click(object sender, EventArgs e) {
    OnImageMoved();
  }

  private void button2_Click(object sender, EventArgs e) {
    Form2 f2 = new Form2(this);
    f2.Show();
  }
}

Тогда ваши дочерние формы могут выглядеть примерно так:

public partial class Form2 : Form {
  public Form2(Form1 parentForm) {
    InitializeComponent();
    parentForm.ImageMoved += new EventHandler(parentForm_ImageMoved);
  }

  void parentForm_ImageMoved(object sender, EventArgs e) {
    MessageBox.Show("Image moved");
  }
}

Вы также можете создать свой собственный класс EventArgs, если хотите передать больше информации, например, какое изображение и т. Д.

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