winform两个子窗体通信
时间: 2023-09-02 09:07:13 浏览: 112
在WinForm中,两个子窗体可以通过父窗体来进行通信。具体实现方式如下:
1. 定义事件
在父窗体中定义一个事件,用于子窗体之间的通信。例如:
```csharp
public event EventHandler DataChanged;
```
2. 触发事件
在父窗体中,当需要通知子窗体时,触发该事件。例如:
```csharp
private void btnNotify_Click(object sender, EventArgs e)
{
DataChanged?.Invoke(this, EventArgs.Empty);
}
```
3. 订阅事件
在子窗体中,订阅父窗体定义的事件。例如:
```csharp
public partial class ChildForm : Form
{
public ChildForm()
{
InitializeComponent();
this.Load += ChildForm_Load;
}
private void ChildForm_Load(object sender, EventArgs e)
{
var parentForm = this.ParentForm as ParentForm;
if (parentForm != null)
{
parentForm.DataChanged += ParentForm_DataChanged;
}
}
private void ParentForm_DataChanged(object sender, EventArgs e)
{
// 处理事件
}
}
```
在子窗体的 `Load` 事件中,获取父窗体实例,并订阅父窗体定义的事件。
这样,当父窗体触发事件时,子窗体就可以接收到通知并做出相应的处理。
阅读全文