其实TreeView是datagird的变版
是datagird的cell的大小设置得很小它内部是如何计算(或获取)鼠标所在位置的TreeNode的?
你在点击某一个节点时,其实你的光标坐标是对应在某一个很小的单元格TreeView是通过什么方式将所有的TreeNode显示出来的?
在datagird的cell中加入信息加在某一行就好
然后判断 是否缩进(子节点和父节点的位置差异)
是datagird的cell的大小设置得很小它内部是如何计算(或获取)鼠标所在位置的TreeNode的?
你在点击某一个节点时,其实你的光标坐标是对应在某一个很小的单元格TreeView是通过什么方式将所有的TreeNode显示出来的?
在datagird的cell中加入信息加在某一行就好
然后判断 是否缩进(子节点和父节点的位置差异)
2. TreeNode可以静态加入,也可以动态填充,选择的TreeNode通过它的编号处理
{
// 添加树的右键菜单
if(e.Button == MouseButtons.Right)
{
Point ClickPoint = new Point(e.X,e.Y);
//获取当前点击的节点
TreeNode CurrentNode = FileTree.GetNodeAt(ClickPoint);
if(CurrentNode == null)
return;
else
{
//给节点临时保存变量赋值
_NodeTemp = CurrentNode;
if (_NodeTemp.Parent == null)
{
return;
}
}
// Convert from Tree coordinates to Screen
Point ScreenPoint = FileTree.PointToScreen(ClickPoint);
// Convert from Screen to Form
Point FormPoint = this.PointToClient(ScreenPoint);
// showing the context menu
// in Add use an overloaded that adds an eventhandler or anything else
ContextMenu menu = new ContextMenu();
menu.MenuItems.Clear();
menu.MenuItems.Add("添加子文件夹");
menu.MenuItems[0].Click += new EventHandler(AddFolder_Click);
menu.MenuItems.Add("删除文件夹");
menu.MenuItems[1].Click += new EventHandler(DelFolder_Click);
menu.MenuItems.Add("重命名");
menu.MenuItems[2].Click += new EventHandler(ReNameFolder_Click);
menu.MenuItems.Add("-");
menu.MenuItems.Add("添加文件");
menu.MenuItems[4].Click += new EventHandler(AddFiles_Click); menu.Show(this,FormPoint);
} =================================================对树节点的右键菜单的添加,里面就有如何根据鼠标位置,判断节点的