This is the base class for controls that support automatic scrolling. This includes ContainerControl (and its subclasses such as UserControl ) and Panel . To enable scrolling, you set the AutoScroll property. You can then specify the AutoScrollMinSize . If the control is made smaller than the AutoScrollMinSize , scrollbars are displayed. Alternatively, if any child controls are found within AutoScrollMargin pixels of the edge of its visible area, the scrollbars will also be shown. You can set or retrieve the current AutoScrollPosition . Note that when you retrieve the position, it comes back as {-x,-y}, whereas when you set it, you must specify {x,y}. As the AutoScrollPosition is changed, the window content is automatically blitted into the new position, child controls are offset by the appropriate amount, and any newly revealed parts of the control are invalidated for repaint. While this is the most efficient repaint scheme, it is not necessarily ideal for all applications. As an alternative, you can create and manage your own ScrollBar controls. public class ScrollableControl : Control { // Public Constructors public ScrollableControl (); // Protected Static Fields protected const int ScrollStateAutoScrolling ; // =1 protected const int ScrollStateFullDrag ; // =16 protected const int ScrollStateHScrollVisible ; // =2 protected const int ScrollStateUserHasScrolled ; // =8 protected const int ScrollStateVScrollVisible ; // =4 // Public Instance Properties public virtual bool AutoScroll {set; get; } public Size AutoScrollMargin {set; get; } public Size AutoScrollMinSize {set; get; } public Point AutoScrollPosition {set; get; } public override Rectangle DisplayRectangle {get; } // overrides Control public DockPaddingEdges DockPadding {get; } // Protected Instance Properties protected override CreateParams CreateParams {get; } // overrides Control protected bool HScroll {set; get; } protected bool VScroll {set; get; } // Public Instance Methods public void ScrollControlIntoView (Control activeControl ); public void SetAutoScrollMargin (int x , int y ); // Protected Instance Methods protected virtual void AdjustFormScrollbars (bool displayScrollbars ); protected bool GetScrollState (int bit ); protected override void OnLayout (LayoutEventArgs levent ); // overrides Control protected override void OnMouseWheel (MouseEventArgs e ); // overrides Control protected override void OnVisibleChanged (EventArgs e ); // overrides Control protected override void ScaleCore (float dx , float dy ); // overrides Control protected void SetDisplayRectLocation (int x , int y ); protected void SetScrollState (int bit , bool value ); protected override void WndProc (ref Message m ); // overrides Control } HierarchySystem.Object System.MarshalByRefObject System.ComponentModel.Component(System.ComponentModel.IComponen, System.IDisposable) Control(IOleContro, IOleObject , IOleInPlaceObject , IOleInPlaceActiveObject , IOleWindow , IViewObject , IViewObject2 , IPersist , IPersistStreamInit , IPersistPropertyBag , IPersistStorage , IQuickActivate , System.ComponentModel.ISynchronizeInvoke , IWin32Window) ScrollableControl SubclassesContainerControl , Panel , System.Windows.Forms.Design.ComponentTray |