DrawTreeNodeEventArgs.State プロパティ
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

TreeNode の現在の状態を示す TreeNodeStates 値のビットごとの組み合わせ。

このプロパティを使用して、描画する TreeNode オブジェクトが特定の状態にあるかどうかをチェックします。このプロパティでは、ノードの基本的な状態情報のみが得られます。たとえばこのプロパティを使用して、ノードが選択されているか、オンになっているか、フォーカスを持っているかどうかを判断できます。さらに詳しい情報が必要な場合には、Node プロパティを使用してノードを取得します。たとえば、ノードが展開されているかどうかを判断するには、ノードを取得して TreeNode.IsExpanded プロパティをチェックします。

オーナー描画を使用して TreeView コントロールをカスタマイズする方法を次のコード例に示します。例で使用されている TreeView コントロールは、通常のノード ラベルのそばに、オプションのノード タグを表示します。ノード タグは、TreeNode.Tag プロパティを使用して指定されます。TreeView コントロールは、カスタムの強調表示色を含むカスタム カラーも使用します。
TreeView の色の大半は、カラー プロパティを設定してカスタマイズできますが、選択内容を強調表示する色については、プロパティとしてアクセスすることはできません。また、選択項目を強調表示する既定の四角形は、ノード ラベルの周囲についてのみ拡張されます。ノード タグを描画したり、ノード タグ全体を表示できるようにカスタマイズされた強調表示用の四角形を描画したりするには、オーナー描画を使用する必要があります。
この例では、TreeView.DrawNode イベントのハンドラは、ノード タグおよびカスタムの選択項目の強調表示を手動で描画します。選択されないノードは、カスタマイズの必要はありません。これらの場合は、DrawDefault プロパティを true に設定し、オペレーティング システムによって描画されるようにします。
コード全体については、DrawTreeNodeEventArgs の概要のリファレンス トピックを参照してください。
' 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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からDrawTreeNodeEventArgs.State プロパティを検索する場合は、下記のリンクをクリックしてください。

- DrawTreeNodeEventArgs.State プロパティのページへのリンク