Gretings.
我正在创建一个界面来编辑游戏场景.基本上它由具有嵌套条件和动作的事件组成.因此,我计划使用两个树视图 - 一个用于选择事件,另一个用于选择要编辑的事件内的条件/操作.
现在,您看,如果我选择一个事件(在左侧树视图中),然后尝试在右侧树视图中选择一些内容,左侧树视图将停止显示蓝色选择矩形.这显然是不好的,因为现在用户不知道他正在编辑哪个事件!
我发现保留某些关于当前选择的信息的唯一方法是使用SelectedImageIndex,但这只是一个不同的小图像.
有没有其他方法可以突出显示treenode,而没有关注树视图?我知道我可以只使用Graphics.DrawRectangle或者其他东西,但是我听说绘图应该在Paint事件中完成而treeview没有绘制事件...所以我想如果我在失去焦点的情况下绘制它,然后拖动窗体出于屏幕或其他什么,它将被"删除"?
无论如何,请告诉我你是否有想法(除了使用一个单独的图标选择和未选择treenode)
谢谢!
像这样:
TreeNode[] treeNodes = treeView.Nodes.Find(searchString, true);
Run Code Online (Sandbox Code Playgroud)
但我希望它在text现场搜索而不是name字段.
如何确定所选节点是TreeView控件中的子节点还是父节点?
我需要能够禁用WinForms应用程序的TreeView控件中的一些复选框,但是标准TreeView控件没有内置这样的功能.
我已经在使用TreeView.BeforeCheck事件并取消它,如果该节点被禁用并且完全正常.
我还将禁用节点的ForeColor更改为GrayText.
有没有人有一个简单而强大的解决方案?
所以我在C#windows窗体应用程序中有一个TreeView.我需要的是一些节点被"锁定",以便根据参数无法检查(或取消选中)它们.
我现在在做的是:
private void tv_local_BeforeCheck(object sender, TreeViewCancelEventArgs e) {
TNode node = (TNode)e.Node;
//if a part node, cancel the action.
if (node.Type == "Part") {
e.Cancel = true;
}
//if a locked node, cancel the action
if (node.Locked == true) {
e.Cancel = true;
}
}
Run Code Online (Sandbox Code Playgroud)
只需单击该复选框,此代码就可以正常工作,但如果用户双击复选框,它仍会检查/取消选中.
我尝试过使用nodeMouseDoubleClick事件,但这并没有真正帮助,因为我无法取消事件...
有没有想法如何取消节点上的双击事件?...或其他什么?谢谢
我有一个(理论上)网络,有N个节点,每个节点都有自己的固定位置.每个节点每个周期发送一条消息,需要直接或通过其他节点到达根节点.
从节点A向节点B发送消息的能量成本是它们之间的距离,平方.
挑战在于如何以树形格式链接这些节点以产生最节能的网络.
例如,有两种可能的方式来链接这些节点,左边的节点更节能.
我正在研究遗传算法来解决这个问题,但我想知道是否有人有任何其他想法,或者知道任何相关的开源代码.
编辑:网络的另一个方面,我忘了提到,每个节点都是电池供电的.因此,如果我们通过同一节点路由太多消息,那么该节点的电池将耗尽,导致网络出现故障.网络的能效是通过在任何节点电池耗尽之前可以从每个节点成功传输到根节点的消息来衡量的.
编辑#2:对于问题原始文本中的遗漏,我很抱歉.不管怎么说,你之前的一些答案并不是我想要的,但我不熟悉MST算法,所以感谢你告诉我它们.
为了让事情更清楚,让我补充一点:
所有节点每个周期发送一个自己的消息,包括内部节点.内部节点还负责中继它们收到的任何消息.这增加了电池的压力,如果他们发送了他们自己的附加信息.目标是在任何节点电池耗尽之前最大化循环次数.
是否有比下面的代码更直接的方法来获取树视图中的根节点或第一级节点?
TreeNode node = treeView.SelectedNode;
while(node != null)
{
node = node.Parent;
}
Run Code Online (Sandbox Code Playgroud) 我有一个JTree和一个awt.Canvas.当我选择从内的多个对象Canvas进入objList,我想显示里面的所有选定项目JTree的选择.这意味着,例如,如果我选择了2个对象,则应扩展它们到root的路径,并且每个所选对象也应该TreeNode选择相应的对象.我的JTree有TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION.
这是我使用的扩展功能的示例:
public void selectTreeNodes() {
HashMap <String, MyEntity> entities = ...;
Iterator it = entities.keySet().iterator();
while (it.hasNext()) {
String str = it.next().toString();
MyEntity ent = entities.get(str);
if (ent.isSelected()) {
DefaultMutableTreeNode searchNode = searchNode(ent.getName());
if (searchNode != null) {
TreeNode[] nodes = ((DefaultTreeModel) tree.getModel()).getPathToRoot(searchNode);
TreePath tpath = new TreePath(nodes);
tree.scrollPathToVisible(tpath);
tree.setSelectionPath(tpath);
}
}
}
}
public DefaultMutableTreeNode searchNode(String nodeStr)
{
DefaultMutableTreeNode node = null;
Enumeration enumeration= …Run Code Online (Sandbox Code Playgroud) 所以我浏览了网页,这里有一些关于stackoverflow的问题是定义:
我即将得出结论,根也是一个内部节点,但它的定义似乎有些模棱两可,如下所示:
如果我们遵循该定义,那么根节点将不会被计为内部节点.那么根节点是否是内部节点?
我想为我的JTree中的每个节点设置一个不同的图标,实际上我是从数据库中加载每个节点,使用"while",我将每个图标设置为root,leaf或parent.像这样:
我的所有声明都是全球性的:
private ResultSet myResultSet;
protected DefaultTreeModel treeModel;
private DefaultMutableTreeNode rootNode,childNode,parent1,parent2;
Run Code Online (Sandbox Code Playgroud)
这是我设置节点的代码:
myResultSet=rtnNodes(); /*Method that returns a RS with my nodes*/
while(myResultSet.next()){
switch(myResultSet.getInt(1)){ /*The first column is the type of node: root, parent, leaf...*/
case 0: treeModel = new DefaultTreeModel((rootNode=new DefaultMutableTreeNode(myResultSet.getString(2)))); break; /*root node*/
case 1: case 4: parent1 = parent2 = makeNode(rootNode); break; /*parent node*/
case 2: makeNode(parent2); break; /*leaf node*/
case 3: parent2 = makeNode(parent1); break; /*sub patern node*/
} /*makeNode is the method where I create the …Run Code Online (Sandbox Code Playgroud)