
场景一:当底层child 节点数为多个时 可以正常选择,但是为1时,会自动选择到父节点上,怎么办?
场景二:当我想要选择2级child节点时,选中的却是3级child节点,该如何解决?
解决这个问题的关键在于 灵活使用一个属性:showCheckedStrategy(默认是子节点)
⚠️注意:这个对象的值是枚举类型
SHOW_ALL: 显示所有选中节点(包括父节点)
SHOW_PARENT: 只显示父节点(当父节点下所有子节点都选中时)
SHOW_CHILD :只显示子节点
个人推荐使用三元运算 灵活改变节点取值,这样能在项目中满足多个不同等级账户的使用需求。
一、首先解决这个方法的思路很多,这里我分析两种.第一,点击树节点是为了干什么,我们直接把点击树节点这个事情转化为结果来做.比如它的结果是调用一个函数,传两个参数进去执行.第二,原生 *** 作dom二、原生 *** 作dom
1.先看要实现的效果
2.获取树的dom不要在mounted进行,此时树的数据可能都还没组织好,树还没渲染
3.定义一个获取树中第一个子节点的方法,这里要用到选择器.bb就是树中点击的那个节点.
注意:点击其它节点都无效,这里需要自己多实验下.
4.在获取到树的数据后,再进行获取,实现点击
5.为方便复制,贴源码
6.树上有一个默认选中的属性,但是只能实现默认选中无法实现点击
首先打开树控件的属性对话框,添加单击事件如下图 *** 作,
,以上 *** 作会自动向工程中添加单击处理函数如下:
void CXXXXXX::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
CPoint Pos
::GetCursorPos(&Pos) //获取鼠标点击的位置坐标
CPoint pt(Pos)
m_Treectrol.ScreenToClient(&pt) //有屏幕坐标转成 控件坐标(树控件的客户区坐标)
HTREEITEM hSelItem = m_Treectrol.HitTest(pt) //通过HitTest获取单击的子项
CRect rec
m_treeTaskRule.GetItemRect(hSelItem, &rec, TRUE)
if (hSelItem != 0 )//&& rec.PtInRect(pt) //判断是否单击到子项(注释掉的代码为是否点击到子项区域一般是其文字显示区域)
{
m_Treectrol.SelectItem(hSelItem) //选中点击项
// add your code
}
*pResult = 0
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)