winform中利用委托实现两个子窗口的传递值,不通过父窗口
时间: 2024-02-20 17:58:58 浏览: 18
在WinForm中,可以通过委托实现两个子窗口之间的值传递,而不需要通过父窗口来实现。具体实现步骤如下:
1. 在子窗口1中定义一个委托类型和事件,用于向子窗口2传递值。
```csharp
public delegate void PassValueHandler(string value);
public event PassValueHandler PassValueEvent;
```
2. 在子窗口1中需要传递值的地方触发事件,并传递值。
```csharp
private void btnPassValue_Click(object sender, EventArgs e)
{
if (PassValueEvent != null)
{
PassValueEvent(txtValue.Text);
}
}
```
3. 在子窗口2中订阅委托事件,并在事件中获取传递的值。
```csharp
private void Form2_Load(object sender, EventArgs e)
{
Form1 form1 = new Form1();
form1.PassValueEvent += new PassValueHandler(PassValueMethod);
}
private void PassValueMethod(string value)
{
txtValue.Text = value;
}
```
这样,当子窗口1中需要向子窗口2传递值时,只需要触发委托事件,子窗口2就可以获取传递的值了。