2009-05-08 11 views
9

私はWinformsアプリケーションでTreeViewコントロールを持っていますが、基本的に目的はTreeViewコントロールを含むフォームを表示し、ノードを開いた状態(簡単 - EnsureVisible)でフォームを表示したいです。TreeView TreeNodeをプログラムでクリックすると、リスト内で強調表示され、AfterSelectイベントが発生します。

私が実行している問題は、TreeViewコントロールのSelectedNodeプロパティを設定するとノードが強調表示されず、AfterSelectイベントが期待通りに起動しないということです。 AfterSelectのことは簡単にコーディングすることができますが、ハイライトの欠如は厄介です。

答えて

6

これは、TreeViewにフォーカスがないためですか? TreeViewのHideSelectionプロパティをFalseに設定すると、表示されている動作が変更されますか?

+0

これはどちらですか? 2つの答えがあります... – brumScouse

4

SelectedNodeを設定した後。 treeViewを選択してみてください。とにかく私のために働いた。

private void button1_Click(object sender, EventArgs e) 
{ 
this.treeView1.SelectedNode = this.treeView1.Nodes[1]; 
this.treeView1.Select(); 
} 
+0

this.treeView1.Select()は私にとって効果がありませんでした。 HideSelectionをfalseに設定すると、やっかいなことになりました。 – Joh

+0

これは私のために働いた。ありがとうございました。 – beta

0

強調表示すると、テキストを太字にすることを意味していると仮定しています。これは、他のクライアントサイド技術のいくつかのようにエレガントではありませんが、あなたは変更されているノードを処理し、

treeNode.Font = new Font(treeNode.Font, treeNode.Font.Style | treeNode.Bold); 
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; 
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); 
     } 
}  
0

問題がTreeView制御は必ずしもフォーカスを持っていなかったと強調されているように、したがって、選択したノードが現れていなかったということであった私にとって: は、解決策を見つけました。次のコードは、私の仕事:

treeView.Focus(); 
treeView.SelectedNode = myTreeNode; 

TreeView制御のためのいくつかのドラッグアンドドロップ機能を実装しながら、私はこの正確な問題に遭遇しました。

関連する問題