4

In have a TreeView in my C# application and I need a SelectedNodeChanged event in winform like the one in WebControls

I've read this question and its answers about using Control.MouseUp and TreeView.AfterSelect events, But its just not the right thing to do (e.g the one OP mentions in that question)

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

I tried to create my own TreeView, But I don't really know how to create a real event for SelectedNodeChanged.

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

    //How to add event here?
}
Community
  • 1
  • 1
Ghasem
  • 14,455
  • 21
  • 138
  • 171

1 Answers1

5

Try this and you can use the SelectedNodeChanged Event

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);
    }
}
J3soon
  • 3,013
  • 2
  • 29
  • 49