我有一个主要的父winform,我已经实现了一些功能,并且有许多子窗口。现在我希望我实现的功能也可以在子窗口上运行。
例如,在父窗口中,我正在选择复选框时移动图像。现在,如果选中此复选框,则图像也应该在所有其他子窗口上移动。
注意:在父窗口上移动的图像应该消失,并且只应显示在opend对话框或子窗口上。
请建议是否有可能。
答案 0 :(得分:3)
尝试使用活动。
为名为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类。