我有' MainWindow'形式是一个MdiContainer和一组按钮,button1加载' DesignTools'作为子形式的形式,这也有一些按钮。两个表单上都有一些常用按钮。将事件附加到子表单上的按钮,并希望从' MainWindow'的按钮引发相同的事件。将事件附加到新创建的对象不会产生任何结果,如下所示。因此,尝试将事件附加到已创建的' MainWindow' ,但无法找到办法。 我有:
MainWindow.cs
public class MainWindow :Form
{
public event EventHandler event1 = delegate { };
public MainWindow mainWindowSM{get;set;}
public PEMainWindow()
{
InitializeComponent();
...
}
InitializeComponent()
{
.....
this.BtnNudgeDown.Click += new System.EventHandler(this.event1);
this.mainWindowSM = new MainWindow();
}
private void BtnDesignTools_Click(object sender, EventArgs e)
{
DesignTools designer = new DesignTools();
}
}
我有DesignTools.cs
public class DesignTools : Form
{
public DesignTools()
{
MainWindow mainWindow = new MainWindow(); //Creating new instance of MainWindow, I think this doesn't work
mainWindow.event1 += this.BtnNudgeDown_Click;
}
private void BtnNudgeDown_Click(object sender, EventArgs e)
{
...
}
}
此尝试不会引发此事件。 如何将事件附加到已创建的对象?尝试在MainWindow中创建一个属性并将对象设置为该属性,但它再次成为新对象。
答案 0 :(得分:0)
你可以试试这个。实例化designtools(一次) 并调用btnNudgeDown_click
MainWindow.cs
public class MainWindow :Form
{
DesignTools designer;
public event EventHandler event1 = delegate { };
public MainWindow mainWindowSM{get;set;}
public PEMainWindow()
{
InitializeComponent();
...
}
InitializeComponent()
{
.....
this.mainWindowSM = new MainWindow();
}
private void BtnDesignTools_Click(object sender, EventArgs e)
{
if (designer == null)
{
designer = new DesignTools();
}
designer.BtnNudgeDown_Click(this, e);
}
}
public class DesignTools : Form
{
public DesignTools()
{
}
private void BtnNudgeDown_Click(object sender, EventArgs e)
{
...
}
}