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


このプロパティを使用して、描画する TreeNode オブジェクトにアクセスします。これは、State プロパティでは必要な情報が適切に得られない場合に役立ちます。State プロパティでは、たとえばノードが選択されているか、オンになっているか、フォーカスを持っているかどうかを判断するために使用するような、基本的な状態情報しか得られません。それに対し、Node プロパティを使用すると TreeNode オブジェクトのすべてのメンバにアクセスできます。たとえばノードの展開状態を判断するような場合には、ノードに直接アクセスする必要があります。

オーナー描画を使用して 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.Node プロパティを検索する場合は、下記のリンクをクリックしてください。

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