2010-11-08 37 views
6

Tôi có một bảng điều khiển với AutoScroll được đặt thành true. Trong đó, tôi lập trình thêm các điều khiển ComboBox. Nếu tôi thêm đủ điều khiển để vượt quá kích thước có thể xem của bảng điều khiển thì thanh cuộn sẽ xuất hiện (cho đến nay rất tốt). Tuy nhiên, nếu tôi mở một trong các hộp kết hợp gần cuối khu vực có thể xem, danh sách kết hợp không được hiển thị chính xác và vùng có thể cuộn có vẻ được mở rộng. Điều này dẫn đến tất cả các điều khiển được "kéo" đến đáy mới của bảng điều khiển với một số khoảng trống mới ở trên cùng. Nếu tôi tiếp tục nhấn vào menu thả xuống ở cuối bảng, vùng có thể cuộn sẽ tiếp tục mở rộng vô thời hạn. Tôi đang neo các điều khiển ở bên trái, bên phải và trên, vì vậy tôi không nghĩ rằng việc neo đậu có liên quan. Có điều gì rõ ràng có thể gây ra điều này không?Hộp kết hợp trong bảng điều khiển có thể cuộn gây ra sự cố

Cập nhật: Có vẻ như vấn đề nằm trong việc kiểm soát các điều khiển ở bên phải. Nếu tôi không neo bên phải thì tôi không có hành vi lạ lùng. Tuy nhiên, không phải thả neo điều khiển sẽ bị cắt bởi thanh cuộn.

Dưới đây là một trường hợp thử nghiệm đơn giản tôi đã xây dựng cho thấy vấn đề này:

public Form1() 
    { 
     InitializeComponent(); 

     Panel panel = new Panel(); 
     panel.Size = new Size(80, 200); 
     panel.AutoScroll = true; 

     for (int i = 0; i < 10; ++i) 
     { 
      ComboBox cb = new ComboBox(); 
      cb.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; 
      cb.Items.Add("Option 1"); 
      cb.Items.Add("Option 2"); 
      cb.Items.Add("Option 3"); 
      cb.Items.Add("Option 4"); 
      cb.Location = new Point(0, i * 24); 
      panel.Controls.Add(cb); 
     } 

     Controls.Add(panel); 
    } 

Nếu bạn di chuyển dưới cùng của bảng điều khiển và bấm vào các hộp combo gần phía dưới bạn sẽ nhận thấy những hành vi kỳ lạ.

+0

nền tảng nào? silverlight? wpf? đèn flash? winforms? asp? (v.v.) –

+0

Winforms, xin lỗi vì không bao gồm thẻ đó trước đó. – Dennis

+0

Tôi đã thử mã thử nghiệm của bạn và không thấy bất cứ điều gì giống như những gì bạn mô tả. Bạn đang sử dụng phiên bản Visual Studio nào? – stone

Trả lời

0

Điều này có vẻ là sự cố cụ thể đối với các thiết bị bạn đang sử dụng. Tôi không thể tái tạo hành vi này chút nào. Bạn đã thử đặt thuộc tính Dock của Bảng điều khiển chưa? Làm thế nào về các thuộc tính khác có ảnh hưởng đến hành vi di chuyển (AutoScrollMargin, AutoScrollMinSize, AutoScrollPosition)? Tôi cũng chơi với kích thước của bảng điều khiển, và có thể sử dụng lớp System.Windows.Forms.Screen để xác định nó tự động dựa trên thiết bị.

+0

Hành vi này chắc chắn có vẻ như thiết bị cụ thể. Tôi đã thử điều này trên một vài thiết bị và đã không thể tái tạo nó trên tất cả chúng. Tôi sẽ liên hệ với nhà sản xuất để xem liệu có một số lý do điều này đang xảy ra trên thiết bị của họ chứ không phải những người khác. Xin lỗi vì sự phản ứng chậm... – Dennis

0

Thử đặt autoscroll thành false và thử sử dụng thanh cuộn bình thường. Ngoài ra, nếu bạn không thể tìm thấy một giải pháp hợp lý khác, bạn có thể xử lý các sự kiện cuộn/thay đổi kích thước và thay đổi kích thước/di chuyển các điều khiển của bạn theo cách thủ công (Chính xác điều gì làm được) Trong khi điều này khá khó chịu, sẽ loại bỏ bất kỳ vấn đề nào bạn có thể gặp phải.

0

Tôi cũng có thể thử nghiệm dựa trên thiết bị của Windows CE, trong Visual Studio 2005, .Net CF 2.0 vì chúng tôi cũng có công cụ sử dụng thiết bị cũ hơn. Tôi không có vấn đề. Có thể nào là vấn đề của phiên bản Windows CE trên thiết bị đang gây ra sự cố? Thiết bị nào đang được sử dụng (ví dụ: Nhà sản xuất?). Tôi thậm chí còn tạo ra một dự án hoàn toàn mới của dạng đơn lẻ, vì vậy không có thứ gì khác đang diễn ra để thay đổi/ảnh hưởng đến mã của bạn.

Hành vi có hoạt động trong khi gỡ lỗi, thời gian chạy hoặc cả hai không?

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