3.有两个窗体,分别为窗体 1 和窗体 2。在窗体 1 中单击打开窗体 2, 打开窗体 2,并把窗体 1 中文本框的值赋给窗体 2 中的文本框中。 在窗体 2 中单击关闭窗体 2,把窗体 2 中的文本框的值赋给窗体 1 的文本框中,然后关闭窗体 2.要求用委托实现
时间: 2023-06-16 08:04:23 浏览: 129
打开一个窗体、就关闭一个窗体
可以通过委托来实现窗体之间的数据传递和交互。具体实现过程如下:
在窗体1中定义一个委托,委托的参数是字符串类型,用来传递文本框的值。
```c#
public delegate void UpdateTextBoxDelegate(string text);
```
在窗体1中定义一个方法,用来接收委托传递的参数,将参数值赋给文本框。
```c#
public void UpdateTextBox(string text)
{
textBox1.Text = text;
}
```
在窗体2中定义一个委托,委托的参数是字符串类型,用来传递文本框的值。
```c#
public delegate void UpdateTextBoxDelegate(string text);
```
在窗体2中定义一个属性,用来存储窗体1中的委托。
```c#
public UpdateTextBoxDelegate UpdateTextBoxHandler { get; set; }
```
在窗体2中的构造函数中,将窗体1中的委托赋值给属性。
```c#
public Form2(UpdateTextBoxDelegate updateTextBoxHandler)
{
InitializeComponent();
UpdateTextBoxHandler = updateTextBoxHandler;
}
```
在窗体2中的关闭事件中,将文本框的值传递给窗体1中的委托,并关闭窗体2。
```c#
private void button1_Click(object sender, EventArgs e)
{
UpdateTextBoxHandler?.Invoke(textBox1.Text);
this.Close();
}
```
在窗体1中的打开窗体2的按钮事件中,实例化窗体2并传递窗体1中的委托,然后打开窗体2。
```c#
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2(new UpdateTextBoxDelegate(UpdateTextBox));
form2.ShowDialog();
}
```
这样,在窗体1中单击打开窗体2时,窗体2就会打开并把窗体1中文本框的值赋给窗体2中的文本框。在窗体2中单击关闭窗体2时,窗体2中的文本框的值就会赋给窗体1的文本框中,然后关闭窗体2。
阅读全文