2012-01-16 54 views
8

Tôi đã viết một hàm để tự động thêm các phần tử vào "Bảng điều khiển".Phần tử bảng điều khiển động thêm và thanh cuộn

public int State;   
public Point Point = new Point(0, 0); 
public void DialogAdd(string message, string author) 
     { 
      var d = new DialogMessage(); 
      if(State == 0) 
      { 
       d.BackColor = Color.FromArgb(255, 237, 241, 245); 
       State = 1; 
      } 
      else 
      { 
       State = 0; 
      } 


      d.Controls["name"].Text = author; 
      d.Location = new Point(0, Point.Y); 
      d.Controls["msg"].Text = message; 
      Point.Y += d.Size.Height; 
      Controls["panel1"].Controls.Add(d); 

     } 

DialogMessage là UserControl, có thuộc tính "AutoSize = true" trên tất cả các thành phần. Bảng điều khiển này có thuộc tính AutoScroll, vì vậy đã có thanh cuộn. Vấn đề là các phần tử được thêm vào theo nhiều cách khác nhau, tùy thuộc vào vị trí của thanh cuộn. Nếu thanh cuộn ở trên cùng, thì tất cả được thêm khi cần.

enter image description here

nhưng nếu tại thời điểm thêm thanh cuộn ở phía dưới, sau đó thêm các mục đi sai

enter image description here

xin vui lòng cho tôi biết những gì tôi đang làm sai và làm thế nào để sửa chữa nó ? Cảm ơn bạn. xin lỗi vì tiếng anh xấu

+0

thể hài lòng thêm thông tin và các thẻ gì API bạn đang sử dụng? Đoán của tôi là các hình thức cửa sổ, nhưng bạn sẽ tiếp cận nhiều người hơn nếu bạn chỉ cần thêm đúng thẻ. – dowhilefor

+0

Vâng, đó là các hình thức cửa sổ. – Anton

+0

Bây giờ, tôi khắc phục vấn đề này bằng cách sử dụng FlowLayoutPanel, nhưng tôi vẫn muốn biết, những gì tôi đang làm sai :) – Anton

Trả lời

6

Khi đặt các điều khiển bên trong bảng điều khiển, bạn phải bồi thường cho các vị trí cuộn:

Về cơ bản, hãy thử sử dụng dòng này:

d.Location = new Point(0, panel1.AutoScrollPosition.Y + Point.Y); 
Các vấn đề liên quan