ScrollControlIntoView
method will do what you want. Here is a test:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
for (int i = 0; i < 100; i++)
{
Label label = new Label();
label.Size = new Size(100, 100);
label.BackColor= Color.Aqua;
label.ForeColor=Color.Black;
label.Margin = new Padding(10);
label.Text= i.ToString();
label.Font = new Font("Arial", 20);
flowLayoutPanel1.Controls.Add(label);
}
flowLayoutPanel1.AutoScroll = true;
}
private void button1_Click(object sender, EventArgs e)
{
flowLayoutPanel1.ScrollControlIntoView(flowLayoutPanel1.Controls[0]);
}
}
and the form designer:
private void InitializeComponent()
{
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
this.flowLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.flowLayoutPanel1.Location = new System.Drawing.Point(12, 12);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Size = new System.Drawing.Size(776, 374);
this.flowLayoutPanel1.TabIndex = 0;
this.button1.Location = new System.Drawing.Point(329, 404);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 1;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.button1);
this.Controls.Add(this.flowLayoutPanel1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
Scroll down, then click the button to go back to the first control.