다음을 통해 공유


ScrollableControl.AutoScroll 속성

정의

컨테이너에서 사용자가 표시되는 컨테이너 경계 밖의 컨트롤까지 스크롤할 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.

public:
 virtual property bool AutoScroll { bool get(); void set(bool value); };
public virtual bool AutoScroll { get; set; }
member this.AutoScroll : bool with get, set
Public Overridable Property AutoScroll As Boolean

속성 값

Boolean

컨테이너에서 자동 스크롤을 사용할 수 있으면 true이고, 그렇지 않으면 false입니다. 기본값은 false입니다.

예제

다음 코드 예제에서는 속성이 설정된 true경우 AutoScroll 필요에 따라 가로 및/또는 세로 스크롤 막대가 자동으로 제공되는 방법을 보여 있습니다. 예제를 실행하려면 다음 단계를 수행합니다.

  1. 새 Windows Forms 애플리케이션을 만듭니다.

  2. 양식에 A Panel 를 추가합니다.

  3. 패널에 a를 TextBox 추가하고 이름을 지정합니다 text1.

  4. 오른쪽 부분이 패널의 오른쪽 가장자리 이상으로 확장되도록 텍스트 상자를 이동합니다.

    패널 범위 밖에 있는 텍스트 상자 부분의 윤곽선만 표시되어야 합니다. 전체 텍스트 상자가 표시되면 텍스트 상자가 패널이 아닌 폼에 있습니다.

  5. 양식에 A Button 를 추가합니다.

  6. 단추의 이벤트에 대한 Click 처리기를 추가합니다.

  7. 다음 예제 코드를 추가하고 단추의 Click 처리기에서 호출합니다.

예제를 실행하면 패널의 경계 내에 있는 텍스트 상자의 일부만 볼 수 있습니다. 단추를 클릭하면 텍스트 상자의 나머지 부분을 볼 수 있는 가로 스크롤 막대가 표시됩니다.

텍스트 상자의 일부를 패널 아래쪽 아래에 배치하면 단추를 클릭하면 세로 스크롤 막대가 표시됩니다.

예제 코드는 속성을 설정하기 전과 속성을 true설정 AutoScroll AutoScrollMargin 하기 전에 텍스트 상자가 패널의 범위 밖에 있는지 여부를 확인합니다. 이 범위를 벗어난 검사는 필요하지 않습니다. 설정된 true경우 AutoScroll 텍스트 상자가 패널 내에 완전히 있을 때 스크롤 막대가 나타나지 않습니다. 또한 기본 설정인 0,0으로 여백을 그대로 둘 수 있습니다.

void SetAutoScrollMargins()
{
   /* If the text box is outside the panel's bounds, 
          turn on auto-scrolling and set the margin. */
   if ( text1->Location.X > panel1->Location.X || text1->Location.Y > panel1->Location.Y )
   {
      panel1->AutoScroll = true;

      /* If the AutoScrollMargin is set to less 
                than (5,5), set it to 5,5. */
      if ( panel1->AutoScrollMargin.Width < 5 || panel1->AutoScrollMargin.Height < 5 )
      {
         panel1->SetAutoScrollMargin( 5, 5 );
      }
   }
}
private void SetAutoScrollMargins()
 {
    /* If the text box is outside the panel's bounds, 
       turn on auto-scrolling and set the margin. */  
    if (text1.Location.X > panel1.Location.X || 
       text1.Location.Y > panel1.Location.Y)
    {
       panel1.AutoScroll = true;
       /* If the AutoScrollMargin is set to less 
          than (5,5), set it to 5,5. */
       if( panel1.AutoScrollMargin.Width < 5 || 
          panel1.AutoScrollMargin.Height < 5)
       {
          panel1.SetAutoScrollMargin(5, 5);
       }
    }
 }
Private Sub SetAutoScrollMargins()
    ' If the text box is outside the panel's bounds,
    ' turn on auto-scrolling and set the margin. 
    If (text1.Location.X > panel1.Location.X) Or _
        (text1.Location.Y > panel1.Location.Y) Then
        panel1.AutoScroll = True
        ' If the AutoScrollMargin is set to less
        ' than (5,5), set it to 5,5. 
        If (panel1.AutoScrollMargin.Width < 5) Or _
            (panel1.AutoScrollMargin.Height < 5) Then
            
            panel1.SetAutoScrollMargin(5, 5)
        End If
    End If
End Sub

설명

true속성을 사용하면 컨테이너가 표시되는 경계보다 큰 가상 크기를 가질 수 있습니다.

참고

Windows Forms 자식 컨트롤이 오른쪽 또는 아래쪽(Control포함 Right 또는Bottom)에 고정되면 컨테이너가 설정된 것처럼 AutoScroll 동작합니다false.

현재 Windows Forms 두 클래스가 모두 RightToLeft 사용하도록 설정true되고 AutoScroll 설정된 경우 파생된 ScrollableControl 모든 클래스가 제대로 동작하지 못하도록 하는 제한 사항이 있습니다. 예를 들어 폼에 (예 FlowLayoutPanel TableLayoutPanel: 또는) 파생된 Panel 컨테이너 클래스와 같은 Panel 컨트롤을 배치한다고 가정해 보겠습니다. 컨테이너에 설정한 AutoScroll 다음 Anchor 컨테이너 trueRight의 컨트롤 중 하나 이상의 속성을 설정하면 스크롤 막대가 표시되지 않습니다. 에서 파생된 ScrollableControl 클래스는 마치 .로 설정된 것처럼 AutoScroll 작동합니다 false. 현재 유일한 해결 방법은 다른 ScrollableControl내부를 중첩하는 ScrollableControl 것입니다. 예를 들어 이 상황에서 작업해야 하는 TableLayoutPanel 경우 컨트롤 내부에 Panel 배치하고 에 설정할 AutoScroll Panel true수 있습니다.

참고

AutoScroll 는 스크롤 막대의 가시성을 자동으로 유지합니다. 따라서 사용 가능한 경우 AutoScroll 또는 VScroll 속성을 true 설정 HScroll 해도 아무런 효과가 없습니다.

적용 대상

추가 정보