Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我们可以在运行时向winform添加一些函数吗?_C#_Winforms_Checkbox - Fatal编程技术网

C# 我们可以在运行时向winform添加一些函数吗?

C# 我们可以在运行时向winform添加一些函数吗?,c#,winforms,checkbox,C#,Winforms,Checkbox,我有一个主父winform,在其中我实现了一些功能,并且有许多子窗口。现在,我希望我实现的功能也能在子窗口上运行 例如,在父窗口中,我正在移动选中复选框的图像。现在,如果选中此复选框,则图像也应在所有其他子窗口上移动 注意:在父窗口上移动的图像应该消失,并且应该只显示在opend对话框或子窗口上 如果可能,请提出建议。尝试使用事件 为父窗体创建名为ImageMoved的事件 子窗体应该订阅此事件,当您移动图像时,您引发事件,然后子窗体将知道如何执行它们的操作 有很多不同的方法可以做到这一点。简单

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

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

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

如果可能,请提出建议。

尝试使用事件

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

如果表单没有相同的基类,您可以将逻辑放在静态方法中并循环所有子类吗?首先,所有对话或子窗口都有相同的基类,第二,如果我将使用静态方法,那么我还必须将所有控件(如图像)(在父窗口上移动)放置在所有其他窗口上。感谢回复,您能举个例子更好地理解吗。@Abhisheks.net我添加了一个例子。