当前位置: 首页 > 编程语言 > C#

WinFormsTreeView-如何手动“高亮”一个节点(如同点击)分享

时间:2023-04-10 18:18:26 C#

WinFormsTreeView-如何手动“高亮”一个节点(如同点击)以编程方式选择节点以图形方式置于“选定”状态,就好像用户单击它一样。SelectedNode仅在内部选择此选项。非常感谢!它没有显示为突出显示的原因是树视图没有焦点。这是我的测试表单上的按钮单击事件:TreeView1.SelectedNode=TreeView1.Nodes(2);TreeView1.Focus();这正确地突出显示了节点。如果你删除Focus();在您单击树视图(树视图中的任何位置,不一定是您要选择的节点)之前调用它不会突出显示。这适用于.net3.5:将树视图组件的DrawMode属性设置为:OwnerDrawAll然后在DrawNode事件中写入以下内容:if(((e.State&TreeNodeStates.Selected)!=0)&&(!MyTreeView.Focused))e.Node.ForeColor=Color.Blue;否则e.DrawDefault=true;在BeforeSelect活动中有:if(MyTreeView.SelectedNode!=null)MyTreeView.SelectedNode.ForeColor=Color.Black;e.Node.ForeColor=Color.Blue;TreeView1.SelectedNode.BackColor=SystemColors.HighlightText;//Thiswillwork上面的解决方案只关注它,但不会改变它的高亮视图。我不知道它是否有帮助,但检查页面的taborder并确保treeview控件的tab顺序为0树视图控件。正如theraneman所说,您可以使用TreeNode.ForeColor和BackColor属性伪造它...我遇到了类似的问题,想在表单加载时选择(突出显示)TreeView节点。也许有人有同样的问题。我首先尝试了Pondidum的解决方案。没有成功。但是后来我在另一个线程中找到了解决方案:只需将TreeView的TabIndex设置为0即可。在这种情况下,您不需要设置焦点。只需选择应该用SelectedNode选择的节点并设置TabIndex。就这样。这是我的工作:voidmyProcedure(){//连接一个DrawMode事件处理程序this.myTV.DrawNode+=myTV_DrawNode;//设置DrawMode和HideSelectionthis.myTV.DrawMode=TreeViewDrawMode.OwnerDrawText;this.myTV.HideSelection=false;//确保TreeView有焦点this.myTV.Focus();//确保TreeView被选中this.myTV.Select();//如果TreeView有一个Node,我想选择第一个Node来演示。if(this.myTV.Nodes.Count>0){//确保节点可见this.myTV.Nodes[0].EnsureVisible();//确保节点被选中this.myTV.SelectedNode=myTV.Nodes[0];}//确保SelectedNode是我们以编程方式想要选择的节点。textBox1.Text=this.myTV.SelectedNode.Text;//如果我们显示sanityCheck1字符串,它实际上是正确的node.text//确保.NET运行时知道节点被选中textBox1.Text+="isSelected="+this.myTV.SelectedNode.IsSelected.ToString();}跟进:laalto回答了HowViewHighLightTreeView.Node以下来自samball答案的DrawNode事件处理程序中的代码根据其选定状态正确突出显示了TreeView.Node。privatevoidmyTV_DrawNode(objectsender,DrawTreeNodeEventArgse){//首先,让.NET使用默认值绘制节点e.DrawDefault=true;//现在是否更新高亮if(e.State==TreeNodeStates.Selected){e.Node.BackColor=SystemColors.Highlight;e.Node.ForeColor=SystemColors.HighlightText;}else{e.Node.BackColor=((TreeView)sender).BackColor;e.Node.ForeColor=((TreeView)sender).ForeColor;}}Platform=C#.NET4.5inWindows10,VisualStudio2015不确定,但是你不能改变那个节点的背景颜色吗?以上就是C#学习教程分享的全部内容:WinFormsTreeView-如何手动“高亮”一个节点(比如点击它)。如果对大家有用,需要进一步了解C#学习教程,还望大家多加关注——本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: