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

时间:2018-01-25 00:14:56

标签: c# forms delegates user-controls treeview

在主窗体中,我有一个树形视图控件,其中每个节点在主窗体中的面板中调用不同的用户控件。我的问题是其中一个用户控件负责在主窗体中添加/删除/更新树视图的节点。

我尝试使用委托来做它不起作用。

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

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表单应用程序。

1 个答案:

答案 0 :(得分:0)

当你可以获得Uzur Control的主要形式时,解决方案就开始了。 我们使用以下方法:

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

然后我们进行下一次投影,以获得实例主要表单

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

UpDateTreeView()是MainForm中的公共方法。