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

示例

下面的代码示例显示当属性设置为 trueAutoScroll,如何根据需要自动提供水平和/或垂直滚动条。 若要运行示例,请执行以下步骤:

  1. 创建新的 Windows 窗体应用程序。

  2. 在窗体上添加一个 Panel 控件。

  3. 将 a TextBox 添加到面板并将其命名 text1

  4. 移动文本框,使右侧部分延伸到面板的右边缘。

    应只看到位于面板边界外的文本框部分的轮廓。 如果整个文本框可见,则文本框位于窗体上,不在面板中。

  5. 在窗体上添加一个 Button 控件。

  6. Click 按钮的事件添加处理程序。

  7. 添加以下示例代码,并从按钮的 Click 处理程序调用它。

运行示例时,只能看到面板边界内的文本框部分。 单击该按钮时,将显示一个水平滚动条,使你能够看到文本框的其余部分。

如果在面板底部下方放置文本框的一部分,单击按钮时会看到垂直滚动条。

示例代码检查文本框是否位于面板边界之外,然后再将 AutoScroll 属性设置为该属性 true,然后再设置 AutoScrollMargin 该属性。 不需要此超出边界的检查。 如果 AutoScroll 设置为 true,则当文本框完全位于面板内时,将不会显示滚动条。 此外,还可以将边距保留为 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 窗体,当子控件定位到右侧或底部 (Control包含RightBottom) 容器的行为就像AutoScroll设置为一false样。

目前 Windows 窗受到如下限制:当 RightToLeft 启用且 AutoScroll设置为 true 时,系统将阻止所有派生自 ScrollableControl 的类正常运行。 例如,假设在窗体上放置一个控件,例如 Panel (或派生自 Panel ((如 FlowLayoutPanelTableLayoutPanel) )的容器类。 如果将容器上的 AutoScroll 设置为 true,然后将容器内一个或多个控件的 Anchor 属性设置为 Right,则不会出现任何滚动条。 派生自 ScrollableControl 的类的运行方式与将 AutoScroll 设置为 false 时相同。 目前,唯一的解决方法是将 ScrollableControl 嵌套到其他 ScrollableControl 内。 例如,如果需要在此情况下运行 TableLayoutPanel,可以将它置于 Panel 控件中并将 Panel 上的 AutoScroll 设置为 true

备注

AutoScroll 自动维护滚动条的可见性。 因此,将 or VScroll 属性设置为HScrolltrue在启用时AutoScroll不起作用。

适用于

另请参阅