2013-05-05 23 views
5

Tôi có một biểu mẫu mà tôi đang sử dụng ShowDialog có chứa một vài hộp văn bản, nhãn và nút. Vấn đề tôi gặp phải là các hộp văn bản đang được rút ra trước bản thân biểu mẫu và các điều khiển khác được rút ra.Điều khiển không được rút ra cùng một lúc

Tôi trọng các OnPaint phương pháp Tôi không chắc chắn nếu điều này có thể gây ra vấn đề:

protected override void OnPaint(PaintEventArgs e) 
{ 
    ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, Color.Black, ButtonBorderStyle.Solid); 
    base.OnPaint(e); 
} 

Đó chỉ là một chút chậm trễ nhưng nó có thể nhìn thấy và gây phiền nhiễu. Cảm ơn bạn.

Biểu mẫu được đệm đôi bằng cách này.

CHỈNH SỬA: Tôi đã xác định được sự cố là biểu mẫu không có FormBorderStyle. Với FormBorderStyle được đặt thành Sizable, sự cố này không xảy ra. Tuy nhiên, xin lưu ý rằng có FormBorderStyle.None là kiểu biên giới của tôi là cần thiết, vì vậy tôi chưa tìm thấy giải pháp nào.

+1

Bạn có thể gửi tất cả các mã có liên quan liên quan đến bản vẽ của Nhãn, các hộp thoại Buttons? – JosephGarrone

+0

Trên thực tế, phần tử cha gọi phương thức kết xuất của mỗi điều khiển con trước khi hiển thị chính nó. Đây là hành vi mặc định. Có thể bạn có thể hiển thị hộp thoại khi tải biểu mẫu hoàn tất. – Saravanan

+0

Tất cả các điều khiển đã được thêm thông qua trình thiết kế Visual Studio nên tôi không chạm vào bản vẽ của các điều khiển này. –

Trả lời

1

Hãy thử này thêm vào dưới dạng hộp thoại:

protected override CreateParams CreateParams 
    { 
     get 
     { 
      // Activate double buffering at the form level. All child controls will be double buffered as well. 

      CreateParams cp = base.CreateParams; 

      cp.ExStyle |= 0x02000000; // WS_EX_COMPOSITED 

      return cp; 
     } 
    } 
+0

Điều này làm việc nhờ !! –

Các vấn đề liên quan