我有一种TreeView
的方法。当我单击父项Item
时,它将执行如下方法:
private void tvProjectList_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
//code there
}
我的问题是:
如何将这种方法执行到另一个click事件中,例如:
private void dgvTaskAssign_CellClick(object sender, DataGridViewCellEventArgs e)
{
tvProjectList_NodeMouseClick()
}
如何将发件人发送到那里,并要求TreeNodeMouseClickEventArgs
?
答案 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
在他的回答中提出的建议。