C#中有两个窗体,分别为窗体 1 和窗体 2。在窗体 1 中单击打开窗体 2, 打开窗体 2,并把窗体 1 中文本框的值赋给窗体 2 中的文本框中。 在窗体 2 中单击关闭窗体 2,把窗体 2 中的文本框的值赋给窗体 1 的文本框中,然后关闭窗体 2.要求用委托实现
时间: 2024-05-04 17:19:15 浏览: 79
在窗体 1 中定义一个委托和一个事件,用于传递窗体 1 中文本框的值给窗体 2。代码如下:
```csharp
public delegate void PassValueDelegate(string value);
public event PassValueDelegate PassValueEvent;
```
在窗体 1 中的打开窗体 2 的按钮的 Click 事件中,实例化窗体 2,并将委托和事件传递给窗体 2。代码如下:
```csharp
private void btnOpenForm2_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
PassValueEvent += form2.PassValue;
form2.ShowDialog();
}
```
在窗体 2 中定义一个方法,用于接收窗体 1 中的委托和事件,并将窗体 1 中文本框的值赋给窗体 2 中的文本框中。代码如下:
```csharp
public void PassValue(string value)
{
txtValue.Text = value;
}
```
在窗体 2 中的关闭窗体按钮的 Click 事件中,调用委托,并将窗体 2 中文本框的值传递给窗体 1。代码如下:
```csharp
private void btnCloseForm2_Click(object sender, EventArgs e)
{
PassValueEvent(txtValue.Text);
this.Close();
}
```
最后,在窗体 1 中订阅事件,将窗体 1 中文本框的值传递给委托。代码如下:
```csharp
private void Form1_Load(object sender, EventArgs e)
{
PassValueEvent += PassValueToForm1;
}
public void PassValueToForm1(string value)
{
txtValue.Text = value;
}
```
阅读全文