ScrollableControl.AutoScroll プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
コンテナーで、表示されている境界の外にあるコントロールにユーザーがスクロールできるかどうかを示す値を取得または設定します。
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
示しています。 例を実行するには、次の手順に従います。
新しい Windows フォーム アプリケーションを作成します。
フォームに Panel を追加します。
TextBoxパネルに を追加し、 という名前を付けます
text1
。テキスト ボックスを移動して、右側の部分がパネルの右端を越えるようにします。
パネルの境界外にあるテキスト ボックスの部分のアウトラインのみが表示されます。 テキスト ボックス全体が表示されている場合、テキスト ボックスはフォーム上にあり、パネルには表示されません。
フォームに Button を追加します。
ボタンの イベントの
Click
ハンドラーを追加します。次のコード例を追加し、ボタンの
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 が有効になり、AutoScroll が true
に設定されている場合に、ScrollableControl から派生したすべてのクラスが適切に動作しされません。 たとえば、 などのPanelコントロールや、 Panel から派生したコンテナー クラス (や などFlowLayoutPanelTableLayoutPanel) をフォームに配置するとします。 コンテナーの AutoScroll を true
に設定し、コンテナー内の 1 つ以上のコントロールの Anchor プロパティを Right に設定する場合、スクロール バーが表示されません。
ScrollableControl から派生するクラスは、AutoScroll が false
に設定された場合のように動作します。 現在、唯一の回避策は、別の ScrollableControl 内側に ScrollableControl をネストすることです。 たとえば、この状況で TableLayoutPanel が動作することが必要な場合は、Panel コントロールの内側に配置して、Panel 上の AutoScroll を true
に設定します。
Note
AutoScroll は、スクロールバーの可視性を自動的に維持します。 したがって、 または VScroll プロパティを HScroll にtrue
設定しても、 が有効になっている場合AutoScrollは無効になります。
適用対象
こちらもご覧ください
.NET