在单击事件上执行TreeView到另一个单击事件

时间:2018-07-19 22:03:29

标签: c# winforms treeview

我有一种TreeView的方法。当我单击父项Item时,它将执行如下方法:

private void tvProjectList_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
  //code there
}

我的问题是:
如何将这种方法执行到另一个click事件中,例如:

private void dgvTaskAssign_CellClick(object sender, DataGridViewCellEventArgs e)
{
    tvProjectList_NodeMouseClick()
}

如何将发件人发送到那里,并要求TreeNodeMouseClickEventArgs

2 个答案:

答案 0 :(得分:1)

您要将代码从tvProjectList_NodeMouseClick移到另一个方法中,然后在两个地方都调用它。

private void SomeMethod()
{
    // Code Here
}

private void dgvTaskAssign_CellClick(object sender, DataGridViewCellEventArgs e)
{
    SomeMethod();
}

private void tvProjectList_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    SomeMethod();
}

答案 1 :(得分:0)

您可以使用Control.Invoke来使用Control.BeginInvoke / MethodInvoker Delegate(我在这里引用别人)的魔术来调用事件方法。这将执行其代码。

您还可以在事件方法特定的EventArgs中传递一些参数,以创建该事件参数类型的新实例。

类似这样的内容:

private void dgvTaskAssign_CellClick(object sender, DataGridViewCellEventArgs e)
{
    treeView1.Invoke((MethodInvoker)delegate {
        tvProjectList_NodeMouseClick(this,
            new TreeNodeMouseClickEventArgs(tvProjectList.SelectedNode, MouseButtons.Left, 1, 0, 0));
    });
}

private void tvProjectList_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    MessageBox.Show("Why did you click me this way!");
}

但是您可能应该考虑Ctznkane525在他的回答中提出的建议。