title: Panel in a panel, autoscroll
body: <p>I'm doing a minimalist test app after encountering an issue with my real program, using WinForms. I put a small panel (child) inside a bigger panel (parent). The bigger panel has AutoScroll set to true. The child panel has the default Anchors set to Top and Left. The child panel is not docked.</p>
  
  <p>The behavior I want is for scrollbars to appear whenever the smaller panel's location is too offset, either top, bottom, left or right. The problem is that it only works when it's too far right, or too far in the bottom. No scrollbars appear when it's too much in the top or too much in the left directions.</p>
  
  <p>I use two simple buttons to force the child panel's location 200 pixels to the left, or 200 pixels to the right to have a quick way of easily modifying its position.</p>
  
  <p>Here's my Form1() code:</p>
  
  <pre><code>        private void button1_Click(object sender, EventArgs e)
      {
          childPanel.Location = new Point(childPanel.Location.X - 200, childPanel.Location.Y);
          hostPanel.Invalidate();
      }
  
      private void button2_Click(object sender, EventArgs e)
      {
          childPanel.Location = new Point(childPanel.Location.X + 200, childPanel.Location.Y);
          hostPanel.Invalidate();
      }
  </code></pre>
  
  <p>Here's the designer code:</p>
  
  <pre><code>       private void InitializeComponent()
      {
          this.hostPanel = new System.Windows.Forms.Panel();
          this.childPanel = new System.Windows.Forms.Panel();
          this.moveChildLeft = new System.Windows.Forms.Button();
          this.moveChildRight = new System.Windows.Forms.Button();
          this.hostPanel.SuspendLayout();
          this.SuspendLayout();
          // 
          // hostPanel
          // 
          this.hostPanel.AutoScroll = true;
          this.hostPanel.BackColor = System.Drawing.SystemColors.AppWorkspace;
          this.hostPanel.Controls.Add(this.childPanel);
          this.hostPanel.Location = new System.Drawing.Point(239, 48);
          this.hostPanel.Name = "hostPanel";
          this.hostPanel.Size = new System.Drawing.Size(400, 400);
          this.hostPanel.TabIndex = 0;
          // 
          // childPanel
          // 
          this.childPanel.BackColor = System.Drawing.SystemColors.ButtonHighlight;
          this.childPanel.Location = new System.Drawing.Point(29, 62);
          this.childPanel.Name = "childPanel";
          this.childPanel.Size = new System.Drawing.Size(342, 259);
          this.childPanel.TabIndex = 0;
          // 
          // moveChildLeft
          // 
          this.moveChildLeft.Location = new System.Drawing.Point(61, 81);
          this.moveChildLeft.Name = "moveChildLeft";
          this.moveChildLeft.Size = new System.Drawing.Size(75, 23);
          this.moveChildLeft.TabIndex = 1;
          this.moveChildLeft.Text = "Left 200";
          this.moveChildLeft.UseVisualStyleBackColor = true;
          this.moveChildLeft.Click += new System.EventHandler(this.button1_Click);
          // 
          // moveChildRight
          // 
          this.moveChildRight.Location = new System.Drawing.Point(61, 111);
          this.moveChildRight.Name = "moveChildRight";
          this.moveChildRight.Size = new System.Drawing.Size(75, 23);
          this.moveChildRight.TabIndex = 2;
          this.moveChildRight.Text = "Right 200";
          this.moveChildRight.UseVisualStyleBackColor = true;
          this.moveChildRight.Click += new System.EventHandler(this.button2_Click);
          // 
          // Form1
          // 
          this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
          this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
          this.ClientSize = new System.Drawing.Size(1018, 549);
          this.Controls.Add(this.moveChildRight);
          this.Controls.Add(this.moveChildLeft);
          this.Controls.Add(this.hostPanel);
          this.Name = "Form1";
          this.Text = "Form1";
          this.hostPanel.ResumeLayout(false);
          this.ResumeLayout(false);
      }
  </code></pre>