This documentation is archived and is not being maintained.

ScrollableControl.AutoScrollPosition Property

Gets or sets the location of the auto-scroll position.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in

public Point AutoScrollPosition { get; set; }
/** @property */
public Point get_AutoScrollPosition ()

/** @property */
public void set_AutoScrollPosition (Point value)

public function get AutoScrollPosition () : Point

public function set AutoScrollPosition (value : Point)

Not applicable.

Property Value

A Point that represents the auto-scroll position in pixels.

The AutoScrollPosition property is used to adjust the position of controls contained on the scrollable control.

When adding controls programmatically to a form, use the AutoScrollPosition property to position the control either inside or outside of the current viewable scroll area.


AutoScrollPosition represents the location of the scrollable control's display rectangle. The X and Y coordinate values retrieved are negative if the control has scrolled away from its starting position (0,0). When you set this property, you must always assign positive X and Y values to set the scroll position relative to the starting position. For example, if you have a horizontal scroll bar and you set x and y to 200, you move the scroll 200 pixels to the right; if you then set x and y to 100, the scroll appears to jump the left by 100 pixels, because you are setting it 100 pixels away from the starting position. In the first case, AutoScrollPosition returns {-200, 0}; in the second case, it returns {-100,0}.

To detect when AutoScrollPosition changes, create an event handler for the Paint event, save the old position value in a private variable, and compare the new value to the old value on subsequent Paint events.

The following code example uses the ScrollableControl derived class Panel and adds a button to the upper left corner of the scrollable area. The example allows for the offset determined by the AutoScrollPosition. The example was written under the assumption that you have a Form that contains a Panel with a Button on it. To enable auto-scrolling, place the button outside of the client area of the Panel.

private void button1_Click(object sender, EventArgs e)
   /* Add a button to top left corner of the 
    * scrollable area, allowing for the offset. */
   panel1.AutoScroll = true;
   Button myButton = new Button();
   myButton.Location = new Point(
      0 + panel1.AutoScrollPosition.X, 
      0 + panel1.AutoScrollPosition.Y);

private void button1_Click(Object sender, EventArgs e)
    /* Add a button to top left corner of the 
       scrollable area, allowing for the offset. 
    Button myButton = new Button();
    myButton.set_Location(new Point(0 + panel1.get_AutoScrollPosition().
        get_X(), 0 + panel1.get_AutoScrollPosition().get_Y()));
} //button1_Click

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0