2012-05-31 27 views
5

Dự án Windows Forms, chỉ hoạt động ở nhà thiết kế (ví dụ: bằng chuột, trước khi biên dịch). Tôi có một Form và 2 Panels trong đó. panel1 được cập nhật (tùy chọn - điền) trong form1. panel2 được gắn (điền) trong form1, quá. Ngoài ra, panel2 là ở phía trước của panel1 (sau này được ẩn đằng sau các cựu). Vấn đề của tôi là - khi tôi undock panel2 và dock nó một lần nữa - nó docks trong panel1 (panel1 trở thành nó là cha mẹ) và không phải trong form1. Làm thế nào tôi có thể thay đổi phụ huynh của bảng điều khiển 2? Giải pháp duy nhất tôi đã tìm ra cho đến nay là cắt (ctrl + x) panel2, chọn form1 và sau đó dán (ctrl + v) panel2, nhưng vì lý do nào đó, loại bỏ tất cả các kết nối giữa các control2 và mã (ví dụ cách nhấn vào nút trên bảng điều khiển2 không hoạt động nữa mặc dù chức năng xử lý sự kiện vẫn còn đó).Vấn đề về đế bảng C# Panel

Bất kỳ ý tưởng nào tốt hơn?

+2

Bạn có thể undock panel1, sau đó di chuyển bảng hai trong số panel1 vào nền Form1. Tôi đã đấu tranh với điều này là tốt. đó luôn là công việc của tôi, tôi cũng thấy rằng việc cắt và dán nó gây ra rất nhiều cơn đau. Nó cũng có thể được sửa trong mã, sử dụng tập tin thiết kế –

+0

@ K'Leg Nó trông rất giống một câu trả lời hợp lệ và chính xác cho tôi .. – gbianchi

+0

@gbianchi Cảm ơn bạn, tôi đặt nó như một câu trả lời ngay bây giờ, tôi nên bắt đầu làm điều đó ngay từ đầu. –

Trả lời

6

Điều khiển cắt vào khay nhớ tạm với cắt xử lý sự kiện, vì vậy tốt nhất nên tránh cắt và dán trong trình thiết kế.

Vì bạn đang sử dụng nhà thiết kế, hãy mở biểu mẫu Document Outline từ menu View - Other Windows trong Visual Studio. Sử dụng các nút mũi tên để đặt đúng bố mẹ hoặc thứ tự ghép nối của các nút điều khiển. cửa sổ Outline

Các tài liệu trông giống như sau:

enter image description here

0

Bảng điều khiển không thể thay đổi Phụ huynh khi bạn thay đổi là đế! Hoặc tôi không thực sự hiểu được vấn đề của bạn.

Nhưng ... nếu bạn muốn thay đổi cấp độ gốc. Chỉ cần xóa bảng điều khiển của danh sách Kiểm soát của Bảng điều khiển và thêm nó vào danh sách Kiểm soát của biểu mẫu.

yourPanel.Controls.Remove(yourOtherPanel); 
yourForm.Controls.Add(yourOtherPanel); 
yourOtherPanel.Dock = .....; 
+0

Người dùng chỉ sử dụng thiết kế .. giống như mã là uselees .. – gbianchi

+0

Thêm mã bổ sung để thay đổi cấp độ gốc chẳng hạn như Form1_Load có vẻ giống như một giải pháp thay thế (và một mã xấu, vì nó nằm trong sản phẩm cuối cùng). Đối với điều này: "Bảng điều khiển không thể thay đổi phụ huynh khi bạn thay đổi là dock !!!" - Rõ ràng, nó có thể. Tôi đoán nó phụ thuộc vào các điều khiển nằm bên dưới bảng điều khiển tôi (un) docking. – NPS

+0

Bảng điều khiển thay đổi cha mẹ của mình theo logic, sau khi bạn hoàn tác nó, chúng nằm trên bảng điều khiển1, không phải trên biểu mẫu, do đó, nó thay đổi nó. – gbianchi

1

Có vẻ mọi người thích câu trả lời nhận xét của tôi vì vậy tôi đặt nó ở đây như là một câu trả lời

Bạn có thể undock panel1, sau đó di chuyển bảng hai trong số panel1 vào nền Form1. Tôi đã đấu tranh với điều này là tốt. đó luôn là công việc của tôi, tôi cũng thấy rằng việc cắt và dán nó gây ra rất nhiều cơn đau. Nó cũng có thể được sửa trong mã, bằng cách sử dụng tệp thiết kế