次の方法で共有


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

プロパティ値

コンテナーで自動スクロールが実行できる場合は true。それ以外の場合は false。 既定値は false です。

次のコード例は、 プロパティが に設定されている場合に、水平スクロール バーまたは垂直スクロール バーを必要に応じて自動的に提供する方法をAutoScrolltrue示しています。 例を実行するには、次の手順に従います。

  1. 新しい Windows フォーム アプリケーションを作成します。

  2. フォームに Panel を追加します。

  3. TextBoxパネルに を追加し、 という名前を付けますtext1

  4. テキスト ボックスを移動して、右側の部分がパネルの右端を越えるようにします。

    パネルの境界外にあるテキスト ボックスの部分のアウトラインのみが表示されます。 テキスト ボックス全体が表示されている場合、テキスト ボックスはフォーム上にあり、パネルには表示されません。

  5. フォームに 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 フォームで、子コントロールが右または下部 (Controlまたは Bottomを含むRight) に固定されている場合、コンテナーは が にfalse設定されているかのようにAutoScroll動作します。

Windows フォームには現在制限があり、両方の RightToLeft が有効になり、AutoScrolltrue に設定されている場合に、ScrollableControl から派生したすべてのクラスが適切に動作しされません。 たとえば、 などのPanelコントロールや、 Panel から派生したコンテナー クラス (や などFlowLayoutPanelTableLayoutPanel) をフォームに配置するとします。 コンテナーの AutoScrolltrue に設定し、コンテナー内の 1 つ以上のコントロールの Anchor プロパティを Right に設定する場合、スクロール バーが表示されません。 ScrollableControl から派生するクラスは、AutoScrollfalse に設定された場合のように動作します。 現在、唯一の回避策は、別の ScrollableControl 内側に ScrollableControl をネストすることです。 たとえば、この状況で TableLayoutPanel が動作することが必要な場合は、Panel コントロールの内側に配置して、Panel 上の AutoScrolltrue に設定します。

Note

AutoScroll は、スクロールバーの可視性を自動的に維持します。 したがって、 または VScroll プロパティを HScrolltrue設定しても、 が有効になっている場合AutoScrollは無効になります。

適用対象

こちらもご覧ください