System.Web.UI.WebControls.TreeView类提供此事件,但TreeView的Forms版本不提供此功能。 Forms世界中的等价物是什么?我使用的是AfterSelect,但看起来不太正确。也许它实际上是我在找的东西,但是文档有点朦胧。为什么没有Windows.Forms.TreeView的SelectedNodeChanged事件?
回答
WinForms TreeView中没有。要引用MSDN的TreeView.AfterSelect:
当节点未被选中时,不会发生此事件。要检测这种情况,请处理Control.MouseUp事件并测试TreeNode.IsSelected属性。
是的,这很糟糕。
使用AfterSelect
没有任何问题。
但请注意,如果选择被清除,将不会触发(如果SelectedNode
成为null
)相反,你可以处理MouseUp
,如documentation建议。
不幸的是,当你处理'MouseUp'时,树视图的'SelectedNode'属性还没有被更新。 – 2015-09-16 18:43:20
好的,这是一个OOOLD问题,但问题真的让我很烦恼。 我做了这个小帮手类 - 它适用于我。
Public Class TreeViewSelectedNodeChangeEventHandler
Public Event SelectedTreeNodeChanged(sender As Object, e As EventArgs)
Private m_selectedNode As TreeNode
Private WithEvents m_tvw As TreeView
Public Shared Function FromTree(tree As TreeView) As TreeViewSelectedNodeChangeEventHandler
If Not IsNothing(tree) Then
Return New TreeViewSelectedNodeChangeEventHandler(tree)
End If
Return Nothing
End Function
''' <summary>Assigns 'Value' to 'this' and returns 'Value'.</summary>
Private Function InLineAssign(Of V)(ByRef this As V, value As V) As V
Dim ret = value
this = value
Return ret
End Function
可能会添加其他触发器,例如, Control.Enter,的MouseUp等等,等等
Private Sub keyUp(sender As Object, e As KeyEventArgs) Handles m_tvw.KeyUp
If Not Me.m_selectedNode Is InLineAssign(Me.m_selectedNode, m_tvw.SelectedNode)
然后
RaiseEvent SelectedTreeNodeChanged(m_tvw, EventArgs.Empty)
End If
End Sub
Private Sub New(tv As TreeView)
m_tvw = tv
End Sub
End Class
有没有在的WinForms TreeView控件。引用MSDN的TreeView.AfterSelect:
当该节点未被选中时,不会发生此事件。要检测这种情况,请处理Control.MouseUp事件并测试TreeNode.IsSelected属性。
您最好使用TreeView.NodeMouseClick事件与AfterSelect相结合。当您选择之前选择的SelectedNode时,不会调用AfterSelect。所以只需在必要时调用AfterSelect,e.Node就可以帮助你。
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Node == tv.SelectedNode)
treeView1_AfterSelect(sender, null);
}
- 1. 为什么GroupBox没有MouseMove事件?
- 2. 为什么事件没有通过?
- 3. 为什么`.draggable()`没有`dropped`事件?
- 4. React.js:为什么没有componentDidRender事件?
- 5. 为什么Entry.insert没有事件执行?
- 6. keydown事件没有解雇,为什么?
- 7. 为什么事件没有执行?
- 8. 为什么所有选定的QGraphicsItem没有收到mouseMove事件?
- 9. 没有事件处理程序的绑定事件。为什么它有效?
- 10. 为什么后没有做任何事
- 11. Mongoid为什么没有“事务”方法?
- 12. 为什么我的RichTextBox没有激活它的事件vb.net
- 13. 为什么我的jQuery没有绑定我的事件?
- 14. 的Flex/AS3:为什么我没有听模块的ready事件
- 15. 为什么WPF边框控件没有mousedoubleclick事件?
- 16. C#:ObservableCollection - 为什么没有通用的“CollectionChanged”事件?
- 17. 为什么我的视图事件没有被解雇?
- 18. c#为什么我的Databinding没有更新PropertyChanged事件?
- 19. 为什么表单的提交事件没有触发(jQuery)?
- 20. 为什么在asp.net中的ReportViewer没有RenderingComplete事件?
- 21. 为什么我从jquery生成的按钮没有事件?
- 22. Google Maps API v3 - 为什么没有事件的上下文?
- 23. 为什么我的Silverlight UIElements没有OnPreview事件?
- 24. 的ObservableCollection CollectionChanged事件似乎并没有被解雇 - 为什么?
- 25. 为什么我的按钮点击事件没有被触发?
- 26. 为什么没有触发DataGridView的CellEndEdit事件
- 27. 为什么我的onclick事件没有执行?
- 28. 为什么我的Button事件没有发生?
- 29. 为什么有些文件没有.extensions?
- 30. 使用的UpdatePanel的asp.net树视图SelectedNodeChanged事件
Control.MouseUp?他们一定在开玩笑。如果树正在用键而不是鼠标导航? – 2009-11-04 01:13:46
好吧,好吧,它很糟糕,但是你总是可以扩展控制并自己添加事件。 – 2009-11-04 01:26:19
如何用键盘取消选择节点? – SLaks 2009-11-04 01:32:46