DrawTreeNodeEventArgs.Bounds 속성

정의

그릴 TreeNode의 크기와 위치를 가져옵니다.Gets the size and location of the TreeNode to draw.

public:
 property System::Drawing::Rectangle Bounds { System::Drawing::Rectangle get(); };
public System.Drawing.Rectangle Bounds { get; }
member this.Bounds : System.Drawing.Rectangle
Public ReadOnly Property Bounds As Rectangle

속성 값

그릴 Rectangle의 범위를 나타내는 TreeNode입니다.A Rectangle that represents the bounds of the TreeNode to draw.

예제

다음 코드 예제에는 사용자 지정 하는 방법을 보여 줍니다.는 TreeView 소유자 그리기를 사용 하 여 제어 합니다.The following code example demonstrates how to customize a TreeView control using owner drawing. TreeView 예제에서 컨트롤 표준 노드 레이블와 함께 선택적 노드 태그를 표시 합니다.The TreeView control in the example displays optional node tags alongside the standard node labels. 노드 태그를 사용 하 여 지정 된 된 TreeNode.Tag 속성입니다.Node tags are specified using the TreeNode.Tag property. TreeView 또한 사용 하 여 사용자 지정 강조 표시 색을 포함 하 여 사용자 지정 색을 제어 합니다.The TreeView control also uses custom colors, including a custom highlight color.

대부분의 사용자 지정할 수 있습니다는 TreeView 색 속성을 설정 하 여 색 있지만 선택 강조 색 속성으로 사용할 수 없습니다.You can customize most of the TreeView colors by setting color properties, but the selection highlight color is not available as a property. 또한 노드 레이블 주위에 기본 선택 항목 강조 표시 사각형을 확장합니다.Additionally, the default selection highlight rectangle extends only around a node label. 소유자 그리기는 노드 태그를 그릴 및 노드 태그를 포함 하도록 충분히 큰 사용자 지정된 강조 표시 사각형을 그리려면 사용 되어야 합니다.Owner drawing must be used to draw the node tags and to draw a customized highlight rectangle large enough to include a node tag.

예에 대 한 처리기를 TreeView.DrawNode 노드 태그 및 사용자 지정 선택 수동으로 강조 표시 하는 이벤트 그립니다.In the example, a handler for the TreeView.DrawNode event draws the node tags and the custom selection highlight manually. 선택 되지 않은 노드는 사용자 지정할이 필요가 없습니다.Unselected nodes do not need customization. 이러한 경우는 DrawDefault 속성이 true 운영 체제에서 그려질 수 있도록 합니다.For these, the DrawDefault property is set to true so that they will be drawn by the operating system.

전체 예제를 참조 하세요.를 DrawTreeNodeEventArgs 개요 항목을 참조 합니다.For the complete example, see the DrawTreeNodeEventArgs overview reference topic.

   // 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) != (TreeNodeStates)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.
         System::Drawing::Font^ nodeFont = e->Node->NodeFont;
         if ( nodeFont == nullptr )
                  nodeFont = (dynamic_cast<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 != nullptr )
      {
         e->Graphics->DrawString( e->Node->Tag->ToString(), tagFont, Brushes::Yellow, (float)e->Bounds.Right + 2, (float)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) != (TreeNodeStates)0 )
      {
         Pen^ focusPen = gcnew Pen( Color::Black );
         try
         {
            focusPen->DashStyle = System::Drawing::Drawing2D::DashStyle::Dot;
            Rectangle focusBounds = NodeBounds( e->Node );
            focusBounds.Size = System::Drawing::Size( focusBounds.Width - 1, focusBounds.Height - 1 );
            e->Graphics->DrawRectangle( focusPen, focusBounds );
         }
         finally
         {
            if ( focusPen )
               delete safe_cast<IDisposable^>(focusPen);
         }

      }
   }
// 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 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 (e.Node.Tag IsNot 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

설명

이 속성에 지정 된 위치가의 왼쪽 위 모퉁이 기준으로 TreeView 제어 합니다.The location specified by this property is relative to the upper-left corner of the TreeView control.

경우는 TreeView.DrawMode 속성이로 설정 되어 OwnerDrawText, 하 여 지정 된 영역은 Bounds 속성은 선택 하는 노드를 클릭할 수는 지역입니다.When the TreeView.DrawMode property is set to OwnerDrawText, the area specified by the Bounds property is the region in which a node can be clicked to select it. 이 적중 횟수 테스트 영역 밖에 그릴 경우 해당 표시 영역을 클릭할 때 노드를 선택 하는 것에 대 한 사용자 고유의 코드를 제공 해야 합니다.If you draw outside this hit test region, you should provide your own code for selecting a node when its visible area is clicked. 사용자 고유의 적중된 테스트를 제공 하려면 때 코드를 TreeView.DrawMode 속성이 OwnerDrawAll합니다.You may also want to provide your own hit test code when the TreeView.DrawMode property is set to OwnerDrawAll. 이 모드에서는 합니다 Bounds 속성의 전체 너비를 전체 노드를 포함 합니다 TreeView 만 적중된 테스트 영역 대신 컨트롤입니다.In this mode, the Bounds property encompasses the whole node across the entire width of the TreeView control, rather than the just hit test region.

적용 대상

추가 정보