如何将 SelectedNodeChanged 事件添加到 winform 树视图?
How to add SelectedNodeChanged event to winform treeview?
我的 C#
应用程序中有一个 TreeView
,我需要 winform 中的一个 SelectedNodeChanged
事件,就像 [=27] 中的事件=]WebControls
我已经阅读了 this question 及其关于使用 Control.MouseUp
和 TreeView.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);
}
}
我的 C#
应用程序中有一个 TreeView
,我需要 winform 中的一个 SelectedNodeChanged
事件,就像 [=27] 中的事件=]WebControls
我已经阅读了 this question 及其关于使用 Control.MouseUp
和 TreeView.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);
}
}