Private Sub Form_Load()
TreeView1.Nodes.Add , , "root ", "root "
TreeView1.Nodes.Add "root ", tvwChild, , "child1 "
TreeView1.Nodes.Add "root ", tvwChild, , "child2 "
TreeView1.Nodes("root ").Expanded = True'展开
End Sub
1.在资源编辑器中右键单击你的树形控件,事件,然后选择NM_RCLICK,双击它,确定,就添加了树形控件的消息响应,然后找到对应的消息响应处理函数,如下是我的例子:void
CViewTreeBase::OnNMRClick(NMHDR
*pNMHDR,
LRESULT
*pResult)
{
UNREFERENCED_PARAMETER(pNMHDR)
CPoint
point
GetCursorPos(&point)
ScreenToClient(&point)
UINT
uFlags
=
0
HTREEITEM
click
=
HitTest(point,
&uFlags)
//click和uFlags能定位你单击的具体项目,参看参考资料。
//在这里你可以进行你的添加节点的 *** 作,相信你会天际节点。如果需要添加菜单,你可以搜搜右键添加菜单,然后在这里d出菜单。具体的,看你需求,再做解答。
}
2.也可以自己派生一个类,继承于CTreeCtr,从类向导中进行添加1中消息,如上的例子是我派生的类。
右键菜单: 选中子节点全被选中)... layui里面没有给到右键菜单,所以,我自己把源码改了一下: 找到layui文件夹里modules下的tree.js 用以上代码,替换以下代码 当i.which等于3,是右键事件,等于1是左键。 所以,左键响应的事件,还是可以在tree的属性设置的时候的click属性里写自己的左键事件,如 tree.render({ elem: '#test1' ,click: function(obj){ console.log(obj.data)//得到当前点击的节点数据 console.log(obj.state)//得到当前节点的展开状态:open、close、normal console.log(obj.elem)//得到当前节点元素 console.log(obj.data.children)//当前节点下是否有子节点 } })右键就在上面选中代码里if分支,i.swich=3的地方搞事情,菜单的话,就是自己写个菜单,然后根据鼠标点击位置显示和隐藏就好了。 二、父节点选中子节点全被选中 一个树形组件,比如到权限管理的时候,回显的时候,父节点被设置为选中,所有改节点的子节点都被设置为选中,但我们需要的可能是这 样的回显: 1、所以,要么,只获取所有已经拥有的权限的最末端的id,然后用 tree.setChecked('demoId', 1)//单个勾选 id 为 1 的节点 tree.setChecked('demoId', [2, 3])//批量勾选 id 为 2、3 的节点 去设置,这样,当子节点被一个选中,改节点的父节点也会被设置为选中,就可以得到需要的样子。 2、不然,就要把数据按照需要的样子做好,再重载实例 tree.reload('demoId', { //新的参数 data:newdata})数据怎么做呢?查看更多
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)