我们可以在运行时将一些函数添加到winform中吗

本文关键字:添加 函数 winform 中吗 运行时 我们 | 更新日期: 2023-09-27 18:26:05

我有一个主父winform,我在其中实现了一些功能,并且有许多子窗口。现在,我希望我实现的功能也能在子窗口上运行。

例如,在父窗口中,我正在移动选中复选框的图像。现在,如果选中此复选框,则图像也应该在所有其他子窗口上移动。

注意:在父窗口上移动的图像应该消失,并且应该只显示在打开的对话或子窗口上。

如果可能的话,请提出建议。

我们可以在运行时将一些函数添加到winform中吗

尝试使用事件。

为父窗体创建一个名为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类。