我在Winforms应用程序中有一个TreeView控件,基本上目标是显示一个包含TreeView控件的表单,我想显示打开节点(easy-EnsureVisible)并选中的表单。
我遇到的问题是,当我设置TreeView控件的SelectedNode属性时,节点没有突出显示,并且AfterSelect事件没有像我期望的那样触发。 AfterSelect的东西很容易编码,但缺乏突出显示很烦人。
答案 0 :(得分:6)
是因为TreeView没有焦点吗?将TreeView的HideSelection属性设置为False会改变您看到的行为吗?
答案 1 :(得分:5)
设置SelectedNode后。尝试选择treeView。无论如何,为我工作。
private void button1_Click(object sender, EventArgs e)
{
this.treeView1.SelectedNode = this.treeView1.Nodes[1];
this.treeView1.Select();
}
答案 2 :(得分:4)
尝试此操作以使所选节点变为粗体:
selectedNode.NodeFont = new System.Drawing.Font(
selectedNode.TreeView.Font,
selectedNode.TreeView.Font.Style | FontStyle.Bold);
// You need to append an emptry string to work around this bug:
// http://support.microsoft.com/kb/937215
selectedNode.Text += string.Empty;
答案 3 :(得分:0)
通过突出显示,我假设你的意思是使文字变粗。它不像其他一些客户端技术那样优雅,但您可以处理正在更改的节点并使所选节点变为粗体,例如
treeNode.Font = new Font(treeNode.Font, treeNode.Font.Style | treeNode.Bold);
答案 4 :(得分:0)
好吧,我想我很快就会问这个问题。 找到了解决方案:
//clear background
RadTreeNodeCollection nodes = rtrvNetworkAll.Nodes;
foreach (RadTreeNode n in nodes)
{
this.ClearRecursive(n);
}
//search a node with the build in find function
foreach (RadTreeNode n in nodes)
{
this.FindRecursive(n);
}
// recursively move through the treeview nodes
private void FindRecursive(RadTreeNode treeNode)
{
foreach (RadTreeNode tn in treeNode.Nodes)
{
// if the text properties match, color the item
if (tn.Text == this.txtSearch.Text)
{
tn.BackColor = Color.Yellow;
}
FindRecursive(tn);
}
}
private void ClearRecursive(RadTreeNode treeNode)
{
foreach (RadTreeNode tn in treeNode.Nodes)
{
tn.BackColor = Color.White;
ClearRecursive(tn);
}
}
答案 5 :(得分:0)
对我来说,问题是TreeView
控件不一定具有焦点,因此所选节点没有显示为突出显示。以下代码对我有用:
treeView.Focus();
treeView.SelectedNode = myTreeNode;
我在为TreeView
控件实现一些拖放功能时遇到了这个问题。
答案 6 :(得分:0)
(我发现)以编程方式执行此操作的最简单方法是伪造click事件。我需要这样做,因为当我使用TreeView.Nodes.Find()搜索节点时,需要它在向下的方向上单击层次结构的每个级别。所以我基本上做了以下事情:
tvMyTreeView_NodeMouseClick(tvMyTreeView, new TreeNodeMouseClickEventArgs(myNode, MouseButtons.Left, 1, 0, 0));
哪个触发了我的事件并伪造了myNode节点上的左键单击。在该事件内,您可以设置e.Node的格式,但是您希望为其着色。希望这会有所帮助。