我有一个用户控件,控件中有一个文本框和一个按钮。我在用户控件中点击按钮,程序会进入分线程A,A执行完成后将结果输入用户控件的文本框中。现在我在窗体中循环生成了多个用户控件,需要分别点击各个用户控件的按钮后将结果返回至对应的文本框中。
时间: 2024-04-07 10:33:25 浏览: 12
对于你的需求,你可以使用委托和事件来实现。首先,在用户控件中定义一个委托和一个事件:
```csharp
public delegate void ResultEventHandler(string result);
public event ResultEventHandler ResultGenerated;
```
然后,在用户控件的按钮点击事件中触发该事件:
```csharp
private void Button_Click(object sender, EventArgs e)
{
// 执行分线程A的逻辑
string result = ExecuteThreadA();
// 触发事件,将结果传递给窗体
ResultGenerated?.Invoke(result);
}
private string ExecuteThreadA()
{
// 执行分线程A的逻辑
// ...
return "结果";
}
```
接下来,在窗体中循环生成多个用户控件,并订阅每个用户控件的事件:
```csharp
private void GenerateUserControls()
{
for (int i = 0; i < count; i++)
{
UserControl userControl = new UserControl();
// 订阅事件
userControl.ResultGenerated += UserControl_ResultGenerated;
// 添加到窗体中
// ...
// 其他初始化操作
// ...
}
}
private void UserControl_ResultGenerated(string result)
{
// 处理用户控件返回的结果
// ...
}
```
这样,每次点击用户控件的按钮时,都会触发相应的事件,并将结果传递给窗体,你可以在事件处理方法中根据需要进行处理。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)