TreeNodeが展開されているか、展開可能かどうかを調べる。

「展開されているか」と「展開可能かどうか」は違いますよね。

前者はTreeNodeにIsExpandedというプロパティがあるから調べられますが後者は無いんですよねー。




// 例えばTreeView::MyTreeView::OnDrawNode()として
protected override void OnDrawNode(System.Windows.Forms.DrawTreeNodeEventArgs e)
{

// 描画すべきノード
TreeNode node = e.Node;

// 展開可能かどうか判定
if( (node != this.TopNode) && (node.LastNode != null) )
{
// 展開可能ならば
  // 展開ボックス(□)を書いたり

// 展開されているかどうか判定
if (node.IsExpanded)
{
// 展開されているならば
   // 展開ボックス(□)の中身をマイナスにしたり。
}
}

}






オリジナルUIを作成した際に使用しました。