【问题标题】:Can we add the some functions to a winform at runtime?我们可以在运行时将一些函数添加到winform吗?
【发布时间】:2012-02-28 21:34:06
【问题描述】:

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

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

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

如果可能,请提出建议。

【问题讨论】:

  • 如果表单没有相同的基类,您可以将您的逻辑放在静态方法中并循环所有子类吗?
  • 首先,所有对话或子窗口都有相同的基类,其次,如果我要放置一个静态方法,那么我还必须放置所有控件,例如图像(在父级上移动窗口)在所有其他窗口上。

标签: c# winforms checkbox


【解决方案1】:

尝试使用事件。

为名为@9​​87654321@ 的父表单创建一个事件。

子表单应该订阅这个事件,当你移动图像时,你会引发事件,然后子表单就会知道做他们的事情。

有很多不同的方法可以做到这一点。简单例子:

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 我添加了一个例子。
猜你喜欢
  • 1970-01-01
  • 2019-09-07
  • 2021-04-21
  • 2021-02-25
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
相关资源
最近更新 更多