如何将 SelectedNodeChanged 事件添加到 winform 树视图?

How to add SelectedNodeChanged event to winform treeview?

我的 C# 应用程序中有一个 TreeView,我需要 winform 中的一个 SelectedNodeChanged 事件,就像 [=27] 中的事件=]WebControls

我已经阅读了 this question 及其关于使用 Control.MouseUpTreeView.AfterSelect 事件的答案,但这不是正确的做法(例如OP 在那个问题中提到)

Control.MouseUp? They must be kidding. What if the tree is being navigating with keys instead of the mouse?

我尝试创建自己的 TreeView,但我真的不知道如何为 SelectedNodeChanged 创建一个真实事件。

public partial class MyTreeView : TreeView
{
    public MyTreeView()
    {
        InitializeComponent();
    }

    //How to add event here?
}

试试这个,你可以使用 SelectedNodeChanged 事件

public partial class MyTreeView : TreeView
{
    public event TreeViewEventHandler SelectedNodeChanged;
    public MyTreeView()
    {
        this.AfterSelect += new TreeViewEventHandler(SelectNodeChangedEvent);
        this.MouseUp += new MouseEventHandler(MouseUpEvent);
    }
    void SelectNodeChangedEvent(object sender, TreeViewEventArgs e)
    {
        SelectedNodeChangedTrigger(sender, e);
    }
    void MouseUpEvent(object sender, MouseEventArgs e)
    {
        if (this.SelectedNode == null)
            SelectedNodeChangedTrigger(sender, new TreeViewEventArgs(null));
    }
    void SelectedNodeChangedTrigger(object sender, TreeViewEventArgs e)
    {
        if (SelectedNodeChanged != null)
            SelectedNodeChanged(sender, e);
    }
}