treeview如何判断当前是否有选中节点

treeview如何判断当前是否有选中节点,第1张

实际上,只要你激活treeview,就不可能会没有选中节点,因为即使你不选中,它也会默认为选中第一个根节点。

你可能是需要判断节点的名称(name),或者需要获取根节的位置信息而已。

dim

nodx

as

node,

trid%

set

nodx

=

treeview1selecteditem‘’获取名称

trid

=

treeview1selecteditemindex‘’获取位置(序号)

msgbox

nodx

msgbox

trid

实现方式:

可以实现采用手动触发事件的方式。

TreeItem<AbstractTreeNode> currentTreeItem = ;//当前发生修改的树节点

currentTreeItemgetValue()setNodeText("abc");

//自动触发修改的事件,使树节点的显示信息能同步修改

EventfireEvent(currentTreeItem, new TreeItemTreeModificationEvent<AbstractTreeNode>(TreeItemvalueChangedEvent(), currentTreeItem, currentTreeItemgetValue()));

构建树节点的显示时自定义渲染方式:

TreeView<AbstractTreeNode> leftNodeTree = new TreeView<AbstractTreeNode>();

leftNodeTreesetCellFactory(new Callback<TreeView<AbstractTreeNode>, TreeCell<AbstractTreeNode>>() {

@Override

public TreeCell<AbstractTreeNode> call(TreeView<AbstractTreeNode> param) {

return new TreeCellImpl();

}

});

public class TreeCellImpl extends TreeCell<AbstractTreeNode> {

@Override

public void updateItem(AbstractTreeNode item, boolean empty) {

superupdateItem(item, empty);

if (empty) {

setText(null);

setGraphic(null);

} else {

setText(itemgetNodeText());

setGraphic(itemgetGraphic());

if (itemgetNodeType()equals(NodeTypeTREE_CONFIG_NODE)) {

setContextMenu(new TreeConfigContextMenu(thisgetTreeView(), thisgetTreeItem(), item));

} else if (itemgetNodeType()equals(NodeTypeTREE_DETAIL_CONFIG_NODE)) {

setContextMenu(new TreeDetailConfigContextMenu(thisgetTreeView(), thisgetTreeItem(), item));

} else if (itemgetNodeType()equals(NodeTypeSHAREDATA_FIELDS_NODE)) {

// setContextMenu(new TreeConfigContextMenu(item));

}

}

}

}

class AbstractTreeNode {

private String nodeId;

private String nodeText;

public String getNodeId() {

return nodeId;

}

public void setNodeId(String nodeId) {

thisnodeId = nodeId;

}

public String getNodeText() {

return nodeText;

}

public void setNodeText(String nodeText) {

thisnodeText = nodeText;

}

XAML:

<TreeView TreeViewItemSelected="TreeView_Selected" />

后台代码:

private void TreeView_Selected(object sender, RoutedEventArgs e)

{

    TreeViewItem tviSelected = eOriginalSource as TreeViewItem;

}

方法如下:

新建了一个NM_Click消息响应函数,用

hParent

=

m_TreeCtrlGetSelectedItem();

m_TreeCtrlGetItemText(hParent);

获取当前选中的文本,但获取的竟然是前一次点击的文本,而非当前点击的文本,请问这是问什么?怎样才能正确获取当前点击的文本?

用OnSelectChanged获得的方法,是有缺陷的,例如两次都点同一个项,那么就不能执行了

解决方法:

DWORD

dwpos

=

GetMessagePos();

TVHITTESTINFO

ht

=

{0};

htptx

=

GET_X_LPARAM(dwpos);

htpty

=

GET_Y_LPARAM(dwpos);

::MapWindowPoints(HWND_DESKTOP,pNMHDR->hwndFrom,&htpt,1);

//把屏幕坐标转换成控件坐标

TreeView_HitTest(pNMHDR->hwndFrom,&ht);

//确定点击的是哪一项

strOpcServerName

=

m_OpcServerListGetItemText(hthItem);

自己数就行,

HTREEITEM hItem = m_TreeGetSelectedItem();

in nCount = 0;

while(hItem)

{

nCount ++;

hItem = m_TreeGetParentItem(hItem);

}

treeon("itemclick",function(view,record,item,index,e){

alert("点击的节点ID是:"+recordrawid+",文字是:"+recordrawtext);

});

以上就是关于treeview如何判断当前是否有选中节点全部的内容,包括:treeview如何判断当前是否有选中节点、javafx treeitem的getchildren在什么时候调用、wpf TreeView通过ItemSource设置的数据源。通过获取SelectItem时结果是实体类。怎么更改为TreeViewItem等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9307478.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存