【问题标题】:Execute TreeView on click event into another click event在单击事件上执行 TreeView 到另一个单击事件中
【发布时间】:2018-07-19 22:03:29
【问题描述】:

我有一个TreeView 的方法。当我点击父Item时,它会执行如下方法:

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

我的问题是:
如何将此方法执行到另一个单击事件中,例如:

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

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

【问题讨论】:

    标签: c# winforms treeview


    【解决方案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();
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用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 在他的回答中提出的建议。

      【讨论】:

        猜你喜欢
        • 2019-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-13
        • 1970-01-01
        • 1970-01-01
        • 2015-11-24
        相关资源
        最近更新 更多