C#实现winform用子窗体刷新父窗体及子窗体改变父窗体控件值的方法
时间: 2023-07-12 08:09:39 浏览: 256
在子窗体中刷新父窗体可以使用委托和事件来实现。具体步骤如下:
1. 在父窗体中定义一个委托和事件:
```csharp
public delegate void RefreshEventHandler();
public event RefreshEventHandler RefreshEvent;
```
2. 在子窗体中通过构造函数传递父窗体对象,并在需要刷新时触发事件:
```csharp
public partial class ChildForm : Form
{
private ParentForm parentForm;
public ChildForm(ParentForm parentForm)
{
InitializeComponent();
this.parentForm = parentForm;
}
private void button1_Click(object sender, EventArgs e)
{
// 子窗体按钮点击时触发事件
parentForm.RefreshEvent?.Invoke();
}
}
```
3. 在父窗体中订阅事件,并在事件处理程序中执行刷新操作:
```csharp
public partial class ParentForm : Form
{
public ParentForm()
{
InitializeComponent();
// 订阅子窗体事件
childForm.RefreshEvent += RefreshData;
}
private void RefreshData()
{
// 刷新操作
// ...
}
}
```
如果要在子窗体中改变父窗体控件的值,可以通过将父窗体对象传递给子窗体,并在子窗体中直接修改父窗体控件的值。具体步骤如下:
1. 在子窗体中定义一个父窗体对象,并在构造函数中初始化:
```csharp
public partial class ChildForm : Form
{
private ParentForm parentForm;
public ChildForm(ParentForm parentForm)
{
InitializeComponent();
this.parentForm = parentForm;
}
private void button1_Click(object sender, EventArgs e)
{
// 修改父窗体控件的值
parentForm.label1.Text = "新的文本内容";
}
}
```
2. 在父窗体中打开子窗体时将自身对象传递给子窗体:
```csharp
private void button1_Click(object sender, EventArgs e)
{
ChildForm childForm = new ChildForm(this);
childForm.Show();
}
```
这样,在子窗体中就可以直接修改父窗体的控件值了。
阅读全文