Tag: treenode

C#TreeView有时会在无效后拒绝自己绘制

我使用TreeView在两个级别中显示一些信息: 一个 乙 1 d 1 2 … 有时,存储在树视图中的信息与显示的信息不同。 这似乎是因为在Invalidates()之后没有调用Paint() Invalidates() 。 我已经尝试过回答这个问题: C#Treeview在移动节点后没有刷新 ,但没有成功。 树(重新)创建代码: using System.Windows.Forms.TreeNode; using System.Windows.Forms.TreeView; […] private void createTree() { […]// Creation code // Check update of the treeview foreach (TreeNode n in viewDataTreeView.Nodes) { Console.WriteLine(n.Name); foreach (TreeNode child in n.Nodes) { Console.WriteLine(” ” + child.Name); } } Console.WriteLine(“done”); this.Invalidate(true); […]

窗体与动态儿童形成树视图

我正在使用C#中的Windows窗体来使用数据库中的数据构建树视图。 有一个商店程序,提供以下信息列表 id – 节点id描述 – 要在树视图上显示的值isEndNode – 如果它是结束节点则为0; 1如果此节点有子节点 如果isEndNode为1,那么我必须使用当前节点的id调用相同的存储过程来接收其下的子节点列表。 我已经构建了一个机制,它将调用存储过程并获取项目列表,但我不知道如何填充树结构。 我想我会将第一个列表显示为父节点,当用户单击+符号展开时,我将调用存储过程并将新项目作为子节点添加到当前节点。 我不知道如何告诉节点它是父节点而不是终端节点。 有没有人建这样的东西? 请帮忙

创建自定义TreeView / TreeNode

我需要扩展TreeNode类,以便我可以为每个节点添加自定义属性(看作WebForms TreeNode不包含Tag属性)。 所以这是我的CustomTreeNode: public class CustomTreeNode : TreeNode { public CustomTreeNode() { } public CustomTreeNode(int nodeId, string nodeType) { NodeId = nodeId; NodeType = nodeType; } public string NodeType { get; set; } public int NodeId { get; set; } } 如果我创建一个CustomTreeNode并将其添加到TreeView: CustomTreeNode node = new CustomTreeNode(1, “CustomType”); treeView.Nodes.Add(node); 然后我会得到一个执行以下的转换exception: CustomTreeNode selectedNode = (CustomTreeNode)TreeView.SelectedNode; 因为TreeView返回TreeNode,而不是CustomTreeNode。 […]

C#:如何避免在双击事件中发生TreeNode检查

所以我在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; } } 只需单击该复选框,此代码就可以正常工作,但如果用户双击复选框,它仍会检查/取消选中。 我尝试过使用nodeMouseDoubleClick事件,但这并没有真正帮助,因为我无法取消事件… 是否有任何想法取消节点上的双击事件?…或其他什么? 谢谢

即使我没有右键单击节点,树视图节点也会突出显示

我在winform上工作,在我的UI上有一个树视图,我发现treenode会突出显示,即使我没有用鼠标点击节点(例如,当我点击下面的位置时,Node1会突出显示),但我真的不喜欢这种行为,因为我想在没有点击treenode时显示不同的上下文菜单 +根节点 |_ Node1 [ Right Click Here, Node1 will be highlighted] | |_ Node2 [ Right Click Here, Node2 will be highlighted]

在树结构上实现IEnumerable

根据这些家伙的工作: http://dvanderboom.wordpress.com/2008/03/15/treet-implementing-a-non-binary-tree-in-c/ http://www.matthidinger.com/archive/2009/02/08/asp.net-mvc-recursive-treeview-helper.aspx 我正在尝试实现一个可以这样使用的TreeView助手: r.Children, r => r.ID) %> 树结构的定义如下: public class Tree : TreeNode where T : TreeNode { } public class TreeNode : IDisposable where T : TreeNode { public T Parent { get; set; } public TreeNodeList Children { get; set; } } public class TreeNodeList : List<TreeNode> where T : TreeNode […]

如何使TreeNode不可见? (C#)

可能有一个非常简单的答案,但我很难找到它。 很简单,我有一个TreeNode,我想让它的可见性为false。 (或其他方式不允许在需要之前显示)。 编辑 – 另一个问题? 我很困惑如何没有Visible属性但是有属性: Node.PrevVisibleNode; 这和Node.PrevNode什么Node.PrevNode ? 谢谢,

ASP.NET:如何创建可扩展的空TreeNode

我需要在TreeView.TreeNodeExpanded事件中填充TreeNode.ChildNodes 。 问题是在事件被触发之前节点是空的,并且在这种情况下它不可扩展,并且旁边没有显示扩展图标[+] 。 我想使节点可扩展,以防其相关对象有一些子节点而不将这些子节点添加到节点。 我考虑过向节点添加一个虚拟子节点,并在展开时将其删除。 还有更好的选择吗? 谢谢。

Treenode文本不同颜色的单词

我有一个TreeView ,每个Node.Text都有两个单词。 第一个和第二个词应该有不同的颜色。 我已经使用DrawMode属性和DrawNode事件更改了文本的颜色,但我无法弄清楚如何以两种不同的颜色分割Node.Text 。 有人指出我可以使用TextRenderer.MeasureText但我没有idead如何/在哪里使用它。 有人有想法吗? 代码: formload() { treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText; } private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e) { Color nodeColor = Color.Red; if ((e.State & TreeNodeStates.Selected) != 0) nodeColor = SystemColors.HighlightText; TextRenderer.DrawText(e.Graphics, e.Node.Text, e.Node.NodeFont, e.Bounds, nodeColor, Color.Empty, TextFormatFlags.VerticalCenter); }

如何确定所选节点是否为TreeView中的子节点或父节点?

如何确定所选节点是TreeView控件中的子节点还是父节点?