2010-09-25 73 views
20

Tôi có bảng điều khiển chứa một nút DataGridView và 3 ở cuối biểu mẫu. Tôi muốn thêm khả năng mở rộng và thu gọn bảng điều khiển này. Có cách nào để làm điều đó trong một ứng dụng Windows Forms?Thêm thiết bị mở rộng (thu gọn/mở rộng) vào Bảng điều khiển WinForm

Có ai đó đã làm điều gì đó tương tự không?

+0

Tôi đã tìm thấy bảng điều khiển phong phú tuyệt vời: http://jfblier.wordpress.com/2008/12/10/rich-panel-with-expander/ – aleroot

Trả lời

39

Điều khiển SplitContainer có khả năng thu gọn một trong hai bảng. Bạn có thể sắp xếp một nút đến thuộc tính Panel1Collapsed.

+0

hoặc móc panel2collapsed =! Panel2collapsed trên sự kiện panel1_clicked –

15

Hãy nhìn vào kiểm soát nở WinForm của tôi - https://github.com/alexander-makarov/ExpandCollapsePanel

Nói chung, nó phải đáp ứng tất cả các yêu cầu cơ bản cho các loại hình kiểm soát.

  • Dễ dàng chỉnh sửa trong Form Designer
  • Đặt bất kỳ điều khiển mà bạn muốn vào khu vực nội dung
  • Áp dụng phong cách khác nhau và kích thước

Easy editing in Form Designer

4

Một thay thế cho việc sử dụng SplitContainer sụp đổ là:

Lắp khay el, đến nơi bạn muốn, và sau đó thay đổi nó là Visible tài sản để hiển thị/ẩn nó. Bằng cách này, các mặt hàng được cập nhật khác sẽ di chuyển để lấp đầy khoảng trống khi không nhìn thấy (tùy thuộc vào cài đặt Dock).

Ví dụ: nếu nút, bảng điều khiển và nhãn được gắn vào đầu (theo thứ tự đó) khi bạn ẩn bảng, nhãn sẽ chuyển lên bên dưới nút.

0

Tôi không thể nhận «SplitContainer» làm việc (không nhớ chi tiết, nhưng tôi đã gặp sự cố), vì vậy hôm nay tôi đã đi thẳng với chức năng này để thực hiện thủ công. Để thu gọn điều khiển, hãy vượt qua đối số phủ định là «the_sz».

/// <summary> 
    /// (In|De)creases a height of the «control» and the window «form», and moves accordingly 
    /// down or up elements in the «move_list». To decrease size pass a negative argument 
    /// to «the_sz». 
    /// Usually used to collapse (or expand) elements of a form, and to move controls of the 
    /// «move_list» down to fill the appeared gap. 
    /// </summary> 
    /// <param name="control">control to collapse/expand</param> 
    /// <param name="form">form to get resized accordingly after the size of a control 
    /// changed (pass «null» if you don't want to)</param> 
    /// <param name="move_list">A list of controls that should also be moved up or down to 
    /// «the_sz» size (e.g. to fill a gap after the «control» collapsed)</param> 
    /// <param name="the_sz">size to change the control, form, and the «move_list»</param> 
    public static void ToggleControlY(Control control, Form form, List<Control> move_list, int the_sz) 
    { 
     //→ Change sz of ctrl 
     control.Height += the_sz; 
     //→ Change sz of Wind 
     if (form != null) 
      form.Height += the_sz; 
     //*** We leaved a gap(or intersected with another controls) now! 
     //→ So, move up/down a list of a controls 
     foreach (Control ctrl in move_list) 
     { 
      Point loc = ctrl.Location; 
      loc.Y += the_sz; 
      ctrl.Location = loc; 
     } 
    } 

Tôi chỉ dán nhãn trên groupBox và thêm chức năng này vào sự kiện «onClick» của nhãn. Và để làm cho khả năng mở rộng rõ ràng hơn cho người dùng, tôi đã thêm vào đầu văn bản ký tự .

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