45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 电脑教程 > 阅读资讯:.Net 2005 TreeView控件的一个问题有哪些?

.Net 2005 TreeView控件的一个问题有哪些?

2016-08-31 16:57:15 来源:www.45fan.com 【

.Net 2005 TreeView控件的一个问题有哪些?

.NET Framework 2.0中为TreeView控件新增了一个事件:NodeMouseDoubleClick。
该事件在MSDN中的介绍:
.Net 2005 TreeView控件的一个问题有哪些?
.Net 2005 TreeView控件的一个问题有哪些?当用户使用鼠标双击TreeNode时发生。
.Net 2005 TreeView控件的一个问题有哪些?
.Net 2005 TreeView控件的一个问题有哪些?命名空间:System.Windows.Forms
.Net 2005 TreeView控件的一个问题有哪些?程序集:System.Windows.Forms(在system.windows.forms.dll中)
.Net 2005 TreeView控件的一个问题有哪些?语法
.Net 2005 TreeView控件的一个问题有哪些?C#
.Net 2005 TreeView控件的一个问题有哪些?
publiceventTreeNodeMouseClickEventHandlerNodeMouseDoubleClick
.Net 2005 TreeView控件的一个问题有哪些?
.Net 2005 TreeView控件的一个问题有哪些?备注
.Net 2005 TreeView控件的一个问题有哪些?此事件在用户使用鼠标双击树节点的任何部分时发生,包括指示节点是折叠还是展开的加号(
+)和减号(-)。
.Net 2005 TreeView控件的一个问题有哪些?

来看看TreeNodeMouseClickEventHandler的定义:
.Net 2005 TreeView控件的一个问题有哪些?TreeNodeMouseClickEventHandler委托
.Net 2005 TreeView控件的一个问题有哪些?注意:此委托在.NETFramework
2.0版中是新增的。
.Net 2005 TreeView控件的一个问题有哪些?
.Net 2005 TreeView控件的一个问题有哪些?表示将处理TreeView的NodeMouseClick和NodeMouseDoubleClick事件的方法。
.Net 2005 TreeView控件的一个问题有哪些?
.Net 2005 TreeView控件的一个问题有哪些?命名空间:System.Windows.Forms
.Net 2005 TreeView控件的一个问题有哪些?程序集:System.Windows.Forms(在system.windows.forms.dll中)
.Net 2005 TreeView控件的一个问题有哪些?
.Net 2005 TreeView控件的一个问题有哪些?语法
.Net 2005 TreeView控件的一个问题有哪些?
.Net 2005 TreeView控件的一个问题有哪些?C#
.Net 2005 TreeView控件的一个问题有哪些?
publicdelegatevoidTreeNodeMouseClickEventHandler(
.Net 2005 TreeView控件的一个问题有哪些?Objectsender,
.Net 2005 TreeView控件的一个问题有哪些?TreeNodeMouseClickEventArgse
.Net 2005 TreeView控件的一个问题有哪些?
.Net 2005 TreeView控件的一个问题有哪些?
.Net 2005 TreeView控件的一个问题有哪些?参数
.Net 2005 TreeView控件的一个问题有哪些?sender
.Net 2005 TreeView控件的一个问题有哪些?事件源。
.Net 2005 TreeView控件的一个问题有哪些?
.Net 2005 TreeView控件的一个问题有哪些?e
.Net 2005 TreeView控件的一个问题有哪些?包含事件数据的TreeNodeMouseClickEventArgs。

TreeNodeMouseClickEventHandler要处理单击和双击两个事件的委托,区分单击和双击的依据是TreeNodeMouseClickEventArgs类的Clicks属性,单击Clicks=1,双击Clicks=2。
TreeNodeMouseClickEventArgs类还有一个Node属性,用来获取被单击的节点。

DobuleClick其实是两次Click,理论上双击一个Node发生的两次Click都应该针对这个Node,但事实并非如此。问题在于双击Node会展开触发展开和折叠,还有自动滚动。
双击Node后,如果Node包含子节点,TreeView触发展开或折叠,如果无法在控件可见区域显示全部Node,还会自动设置滚动位置。事件处理的过程似乎是这样的:
1、第一次Click
2、第二次Click的MouseDown,触发展开或折叠,设置滚动位置
3、第二次Click的MouserUp,获取Click的Node,构造TreeNodeMouseClickEventArgs参数。获取Click的Node是根据MouseUp时的鼠标位置,而这时可能发生了滚动,鼠标位置指向的Node已不是第一次Click时点击的Node了。
.Net 2005 TreeView控件的一个问题有哪些?

.Net 2005 TreeView控件的一个问题有哪些?

所以,在NodeMouseDoubleClick事件的TreeNodeMouseClickEventArgs参数中,Node属性很可能不是DoubleClick的Node。在处理NodeMouseDoubleClick事件时,应该使用Treeview.SelectedNode而不使用e.Node。
 

本文地址:http://www.45fan.com/dnjc/70327.html
Tags: .net TreeView 2005
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部