Имею метод TreeView. Когда я нажимаю на родительский Item, он выполняет такой метод, как:
private void tvProjectList_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
//code there
}
Мой вопрос:
Как я могу выполнить этот метод в другом событии щелчка, например:
private void dgvTaskAssign_CellClick(object sender, DataGridViewCellEventArgs e)
{
tvProjectList_NodeMouseClick()
}
Как я могу отправить туда отправителя и запрашивается TreeNodeMouseClickEventArgs?





Вы хотите переместить код из 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();
}
Вы можете вызвать метод события, используя магию 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 предлагает в своем ответе.