
CPoint pt;
GetCursorPos(&pt);//获取当前鼠标点击坐标
m_treeScreenToClient(&pt);//将屏幕坐标转换为客户区坐标
HTREEITEM hItem = treeHitTest(pt);//点击测试,当前点击的是否为节点
if(NULL != hItem)//是的话,进行下面 *** 作
{
循环m_treeGetParentItem
m_treeGetItemText
直到GetParentItem返回空,表示当前为根节点
}
大概就是这样 具体的代码自己写写看 代码需要放到树形控件的鼠标单击响应函数里!
BOOL bCheck;
TVHITTESTINFO ht;//一个区域范围
GetCursorPos(&htpt);//获得区域范围内的光标
m_tree1ScreenToClient(&htpt);//将鼠标的屏幕坐标,转换成树形控件的客户区坐标
htflags = TVHT_ABOVE;
//获取鼠标点击的节点的消息
HTREEITEM hItem = m_tree1HitTest(&ht);
if (hItem == NULL)
{
return;
}
HTREEITEM hRoot = m_tree1GetRootItem();
//选中的checkbox
if (htflags & TVHT_ONITEMSTATEICON)//如果点击的位置是在节点位置上面
{
//根节点
if (hItem == hRoot)
{
bCheck = m_tree1GetCheck(hRoot);
//根节点被选中
if (!bCheck)
{
hItem = m_tree1GetChildItem(hRoot);
while (hItem != NULL)
{
m_tree1SetCheck(hItem, TRUE);
hItem = m_tree1GetNextItem(hItem,TVGN_NEXT);
}
}
else
{
hItem = m_tree1GetChildItem(hRoot);
while (hItem != NULL)
{
m_tree1SetCheck(hItem, FALSE);
hItem = m_tree1GetNextItem(hItem, TVGN_NEXT);
}
}
}
}
还有一种就是直接给tree返回来的数据加个全选的数据就可以了
data里面的
html
方法 methods
Element-ui中tree树形控件全选与取消全选的功能实现(checkbox那种形式而不是tree)
//树形控件
//data里面的内容
//checkbox选择事件
看了你的说明,大致思路如下
首先点击节点 应该是过滤或者去按规则取一些数据回来 绑定到dataGridview中 ,如果是这样 那你树节点就要存这个取数的条件或过滤条件
可以使用TreeNodeTag来存你要的数据 利用TreeView的AfterSelect事件来做,在事件的方法里获取当前选中节点然后提取Tag属性 进行数据绑定处理即可
var
node:TTreeNode;
然后你获取你所选中的节点
node:=TreeViewSelected;
它的父节点的名称就是
nodeParentText
它的祖父节点的名称就是
nodeParentParentText
以此类推
注意,在访问父节点之前要判断是否存在
if nodeParent<>nil then
begin
end;
列表可以用listview控件,如果有多行的话可以用循环,这里只用一行进行说明:
ListViewItem lv = new ListViewItem(); //先实例化
lvText =“”; 一行的第一个元素,双引号里面填写元素
lvSubItemsAdd(); 一行的第二个元素,括号号里面填写元素
lvSubItemsAdd(); 一行的第二个元素,括号号里面填写元素,以此类推
listViewnameItemsAdd(lv); 将实例化添加到listview里面, listViewname为所用控件的名字
我当时只用TextBlock 的时候也很苦恼,最后只好加了一个CheckBox来进行选中。看能不能帮到你。。
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsCheckedItem,Mode=TwoWay}" Click="DoClick" Tag="{Binding}" />
<TextBlock Text="{Binding ItemName,Mode=TwoWay}"/>
</StackPanel>
拖拽后,树的treeData的结构也跟着改变了的,无须再去修改。如果里面有参数要修改的话用递归的方式处理一下就行了
dealtreeData(treeData, parent_id) {
treeDataforEach((item) => {
if (
parent_id !== null &&
parent_id !== "" &&
typeof parent_id !== "undefined"
) {
itemparent_id = parent_id;
}
if (itemchildren && itemchildrenlength > 0) {
thisdealtreeData(itemchildren, itemid);
}
});
},
// 树拖动
onDrop() {
//修改节点的parent_id
thisdealtreeData(thistreeData, 0);
},
以上就是关于vc6 怎么获取ctreectrl控件被选中子项的所有父项的文本全部的内容,包括:vc6 怎么获取ctreectrl控件被选中子项的所有父项的文本、VC中如何实现鼠标单击树形控件节点 *** 作、Element-ui中tree树形控件全选与取消全选的功能实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)