在C#的WinForm项目中,我自定义了一个可显示’是’或’否’选项的对话框窗体,该窗体由父窗体的点击事件触发显示。如何将这个子窗体中按钮点击事件的逻辑传递回并响应于父窗体?
时间: 2024-12-17 08:45:50 浏览: 17
在C#的Windows Forms (WinForm) 中,如果你想要从自定义对话框(子窗体)的按钮点击事件传递逻辑回父窗体,并响应它,你可以按照以下步骤操作:
1. **设置事件委托**:
在子窗体(DialogForm.cs)上,将按钮点击事件处理程序设置为一个公共事件,例如`ClickToParent`:
```csharp
public event EventHandler ClickToParent;
private void buttonYes_Click(object sender, EventArgs e)
{
OnClickToParent(sender, e); // 触发事件
}
protected virtual void OnClickToParent(object sender, EventArgs e)
{
if (ClickToParent != null)
ClickToParent(this, e);
}
```
2. **在父窗体绑定事件**:
在父窗体(ParentForm.cs)中,在初始化或需要的时候,订阅这个事件并提供处理方法:
```csharp
public partial class ParentForm : Form
{
private DialogForm dialog = new DialogForm();
private void parentButton_Click(object sender, EventArgs e)
{
dialog.ShowDialog(); // 显示对话框
// 订阅子窗口的事件
dialog.ClickToParent += ParentForm_ClickToParent;
}
private void ParentForm_ClickToParent(object sender, EventArgs e)
{
// 这里是你接收到子窗体按钮点击后的逻辑,比如更新数据、更改状态等
MessageBox.Show("User clicked '是'");
}
// ...其他代码...
}
```
当子窗体中的"是"按钮被点击时,会触发`ClickToParent`事件,然后在父窗体中执行指定的`ParentForm_ClickToParent`方法。
阅读全文