C#中我有一个用户控件,用户控件中有文本框A、文本框赋值方法A1、按钮B,按钮点击事件B1、Thread线程C。我在用户控件中点击B,程序会进入B1,B1会执行C,C执行A1。现在我在窗体中循环生成了多个用户控件,需要分别点击各个用户控件的B后执行对应的A1将结果返回至对应的A中。
时间: 2024-04-07 17:33:39 浏览: 55
您可以通过以下步骤实现您的需求:
1.用户控件中,为按钮B的点击事件B1添加一个托,并将该委托定义为事件。
```csharp
public event Action ButtonBClicked;
```
2. 在B的点击事件B1,触发ButtonBClicked事件。
csharp
private voidB_Click(object sender, EventArgs e)
{
ButtonBClicked?.Invoke();
}
```
3 在窗体中循环多个用户控件,并订阅每个用户控件的ButtonBClick事件,指定对应的处理A1。
```csharp
private void GenerateUserControls()
{
for (int i = 0; i < numberOfControls; i++)
{
UserControl userControl = new UserControl();
userControl.ButtonBClicked += HandleButtonBClicked;
// 将用户控件添加到窗体中
}
}
private void HandleButtonBClicked()
{
// 在这里执行对应的A1方法,并将结果返回至对应的A中
}
```
这样,每个用户控件的按钮B被点击时,都会触发对应的A1方法,并将结果返回给该用户控件的文本框A。请根据您的实际需求进行相应的修改和适配。
阅读全文