在 C# 中使用委托从其他用户控件更新树视图

Updating a treeview from other usercontrol using delegate in C#

在主窗体中,我有一个树视图控件,其中每个节点在主窗体中的面板中调用不同的用户控件。我的问题是这些用户控件之一负责主窗体中树视图的 add/delete/update 个节点。

我尝试过使用委托来完成它,但它不起作用。

在主窗体中我有一个这样的方法:

public void UpDateTreeView()
{
    //load xml file that contain my nodes
    //do something

    myTreeView.Refresh();
}

在用户控件中我正在尝试:

delegate void UpDatingMyTreeView();

private void buttonUpDate_Click(object sender, EventArgs e)
{
    //update the xml file with a new node
    //do something...

    frm_MainForm frm = new frm_MainForm frm();
    UpDatingMyTreeView updTrv = new UpDatingMyTreeView(frm.UpDateTreeView);
    updTrv();
}

我从未使用过委托,但它不起作用。我正在使用 windows 表格申请。

当您可以获得 Uzur 控件的主窗体时,解决方案就开始了。 我们使用以下方法:

yourUserControl.FindForm(); or this.FindForm();

然后我们再进行下一次投影,得到InstanceMain form

private void buttonUpDate_Click(object sender, EventArgs e)
    {
      ((MainForm)this.FindForm()).UpDateTreeView();
    }

UpDateTreeView() 是 public MainForm 中的方法。