c# 子窗体listview 数据改变,主窗体的listview 同步改变 使用委托和事件
时间: 2024-01-06 07:06:14 浏览: 132
你可以在子窗体中创建一个事件,当子窗体的 ListView 数据改变时触发该事件。然后在主窗体中订阅该事件,并在事件处理程序中更新主窗体的 ListView。
以下是示例代码:
在子窗体中创建事件:
```
public delegate void ListViewDataChangedEventHandler(object sender, EventArgs e);
public event ListViewDataChangedEventHandler ListViewDataChanged;
private void OnListViewDataChanged()
{
if (ListViewDataChanged != null)
{
ListViewDataChanged(this, EventArgs.Empty);
}
}
private void UpdateListView()
{
// 更新子窗体的 ListView 数据
// ...
// 触发事件
OnListViewDataChanged();
}
```
在主窗体中订阅事件:
```
private void ChildForm_ListViewDataChanged(object sender, EventArgs e)
{
// 更新主窗体的 ListView 数据
// ...
}
private void OpenChildForm()
{
ChildForm childForm = new ChildForm();
childForm.ListViewDataChanged += ChildForm_ListViewDataChanged;
childForm.Show();
}
```
在子窗体关闭时,记得取消订阅事件:
```
private void ChildForm_FormClosed(object sender, FormClosedEventArgs e)
{
ListViewDataChanged = null;
}
```
通过这种方式,当子窗体的 ListView 数据发生改变时,主窗体的 ListView 也会同步更新。
阅读全文