TreeNodeStates 列挙体
この列挙体には、メンバ値のビットごとの組み合わせを可能にする FlagsAttribute 属性が含まれています。
名前空間: System.Windows.Formsアセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

<FlagsAttribute> _ Public Enumeration TreeNodeStates

メンバ名 | 説明 | |
---|---|---|
Checked | ノードがチェックされています。 | |
Default | ノードが既定の状態です。 | |
Focused | ノードにフォーカスがあります。 | |
Grayed | ノードが無効です。 | |
Hot | ノードがホットです。この状態は、TreeView.HotTracking プロパティが true に設定され、マウス ポインタがノードの上にあるときに発生します。 | |
Indeterminate | ノードが中間状態です。 | |
Marked | ノードがマークされています。 | |
Selected | ノードが選択されています。 | |
ShowKeyboardCues | ノードにショートカット キーが示されます。 |


オーナー描画を使用して TreeView コントロールをカスタマイズする方法を次の例に示します。例で使用されている TreeView コントロールは、通常のノード ラベルのそばに、オプションのノード タグを表示します。ノード タグは、TreeNode.Tag プロパティを使用して指定されます。TreeView コントロールは、カスタムの強調表示色を含むカスタム カラーも使用します。
TreeView の色の大半は、カラー プロパティを設定してカスタマイズできますが、選択内容を強調表示する色については、プロパティとしてアクセスすることはできません。また、選択項目を強調表示する既定の四角形は、ノード ラベルの周囲についてのみ拡張されます。ノード タグを描画したり、ノード タグ全体を表示できるようにカスタマイズされた強調表示用の四角形を描画したりするには、オーナー描画を使用する必要があります。
この例では、TreeView.DrawNode イベントのハンドラが DrawTreeNodeEventArgs クラスのメソッドを呼び出して、選択されていないノードを描画します。これらのメソッドは、カスタマイズする必要がない TreeView 要素の既定の外観を提供します。このハンドラは、ノード タグおよびカスタムの選択項目の強調表示を手動で描画します。
詳細については、TreeView.DrawNode のリファレンス トピックを参照してください。
' Draws a node. Private Sub myTreeView_DrawNode(ByVal sender As Object, _ ByVal e As DrawTreeNodeEventArgs) Handles myTreeView.DrawNode ' Draw the background and node text for a selected node. If (e.State And TreeNodeStates.Selected) <> 0 Then ' Draw the background of the selected node. The NodeBounds ' method makes the highlight rectangle large enough to ' include the text of a node tag, if one is present. e.Graphics.FillRectangle(Brushes.Green, NodeBounds(e.Node)) ' Retrieve the node font. If the node font has not been set , ' use the TreeView font. Dim nodeFont As Font = e.Node.NodeFont If nodeFont Is Nothing Then nodeFont = CType(sender, TreeView).Font End If ' Draw the node text. e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White, _ e.Bounds.Left - 2, e.Bounds.Top) ' Use the default background and node text. Else e.DrawDefault = True End If ' If a node tag is present, draw its string representation ' to the right of the label text. If Not (e.Node.Tag Is Nothing) Then e.Graphics.DrawString(e.Node.Tag.ToString(), tagFont, _ Brushes.Yellow, e.Bounds.Right + 2, e.Bounds.Top) End If ' If the node has focus, draw the focus rectangle large, making ' it large enough to include the text of the node tag, if present. If (e.State And TreeNodeStates.Focused) <> 0 Then Dim focusPen As New Pen(Color.Black) Try focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot Dim focusBounds As Rectangle = NodeBounds(e.Node) focusBounds.Size = New Size(focusBounds.Width - 1, _ focusBounds.Height - 1) e.Graphics.DrawRectangle(focusPen, focusBounds) Finally focusPen.Dispose() End Try End If End Sub 'myTreeView_DrawNode
// Draws a node. private void myTreeView_DrawNode( object sender, DrawTreeNodeEventArgs e) { // Draw the background and node text for a selected node. if ((e.State & TreeNodeStates.Selected) != 0) { // Draw the background of the selected node. The NodeBounds // method makes the highlight rectangle large enough to // include the text of a node tag, if one is present. e.Graphics.FillRectangle(Brushes.Green, NodeBounds(e.Node)); // Retrieve the node font. If the node font has not been set , // use the TreeView font. Font nodeFont = e.Node.NodeFont; if (nodeFont == null) nodeFont = ((TreeView)sender).Font; // Draw the node text. e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White, Rectangle.Inflate(e.Bounds, 2, 0)); } // Use the default background and node text. else { e.DrawDefault = true; } // If a node tag is present, draw its string representation // to the right of the label text. if (e.Node.Tag != null) { e.Graphics.DrawString(e.Node.Tag.ToString(), tagFont, Brushes.Yellow, e.Bounds.Right + 2, e.Bounds.Top); } // If the node has focus, draw the focus rectangle large, making // it large enough to include the text of the node tag, if present. if ((e.State & TreeNodeStates.Focused) != 0) { using (Pen focusPen = new Pen(Color.Black)) { focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot; Rectangle focusBounds = NodeBounds(e.Node); focusBounds.Size = new Size(focusBounds.Width - 1, focusBounds.Height - 1); e.Graphics.DrawRectangle(focusPen, focusBounds); } } }
// Draws a node. private void myTreeView_DrawNode(Object sender, DrawTreeNodeEventArgs e) { // Draw the background and node text for a selected node. if ((int)(e.get_State() & TreeNodeStates.Selected) != 0) { // Draw the background of the selected node. The NodeBounds // method makes the highlight rectangle large enough to // include the text of a node tag, if one is present. e.get_Graphics().FillRectangle(Brushes.get_Green(), NodeBounds(e.get_Node())); // Retrieve the node font. If the node font has not been set , // use the TreeView font. Font nodeFont = e.get_Node().get_NodeFont(); if (nodeFont == null) { nodeFont = ((TreeView)sender).get_Font(); } // Draw the node text. e.get_Graphics().DrawString(e.get_Node().get_Text(), nodeFont, Brushes.get_White(), RectangleF.op_Implicit(Rectangle.Inflate(e.get_Bounds(), 2, 0))); } // Use the default background and node text. else { e.set_DrawDefault(true); } // If a node tag is present, draw its string representation // to the right of the label text. if (e.get_Node().get_Tag() != null) { e.get_Graphics().DrawString(e.get_Node().get_Tag().ToString(), tagFont, Brushes.get_Yellow(), e.get_Bounds().get_Right() + 2, e.get_Bounds().get_Top()); } // If the node has focus, draw the focus rectangle large, making // it large enough to include the text of the node tag, if present. if ((int)(e.get_State() & TreeNodeStates.Focused) != 0) { Pen focusPen = new Pen(Color.get_Black()); try { focusPen.set_DashStyle(System.Drawing.Drawing2D.DashStyle.Dot); Rectangle focusBounds = NodeBounds(e.get_Node()); focusBounds.set_Size(new Size(focusBounds.get_Width() - 1, focusBounds.get_Height() - 1)); e.get_Graphics().DrawRectangle(focusPen, focusBounds); } finally { focusPen.Dispose(); } } } //myTreeView_DrawNode

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


System.Windows.Forms 名前空間
DrawTreeNodeEventArgs クラス
DrawTreeNodeEventArgs.State プロパティ
TreeView.DrawNode
Weblioに収録されているすべての辞書からTreeNodeStates 列挙体を検索する場合は、下記のリンクをクリックしてください。

- TreeNodeStates 列挙体のページへのリンク