2012-04-26 27 views
5

Các biểu mẫu trong một ứng dụng Tôi đang làm việc với một nhóm có một datagridview là thành phần chính (cần chiếm hầu hết kích thước), nhưng có các thành phần khác. có một splitcontainer ngang để chia chúng, nhưng tôi đã tự hỏi làm thế nào để làm cho bảng điều khiển thay đổi kích thước đầu vào nội dung của nó. Thật không may, các tấm trong một splitcontainer không có một tài sản AutoSize ...Splitcontainer flowlayoutpanel hoặc bảng điều khiển tự động (VB.NET)

Dưới đây là hai hình ảnh để hiển thị những gì chúng ta cần: image1 http://www.mediafire.com/conv/8d141b69c63b0d3ac8aebf9129bb77e25ee4a75086cfa6595c4510041fda1fa66g.jpg image2 http://www.mediafire.com/conv/56d959d2a9f99b71af16f7ab3eb5833874e8583f7b15bd1df16aafaa7313a7066g.jpg

Như bạn thấy, bảng điều khiển trên cùng của splitcontainer nên điều chỉnh kích thước nội dung của nó. Có bất kì cách nào để đạt được điều này không?

Trả lời

3

Tôi giả sử bạn có nghĩa là vùng chứa phân tách "ngang" dựa trên hình ảnh của bạn.

Bạn có thể thử đạt được điều này bằng tay bằng cách sử dụng sự kiện ControlAdded của bảng điều khiển:

Public Class Form1 

    Public Sub New() 
    InitializeComponent() 
    End Sub 

    Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown 
    SplitContainer1.SplitterDistance = SmallPanel.Height 
    End Sub 

    Private Sub SplitContainer1_Panel1_ControlAdded(ByVal sender As Object, ByVal e As ControlEventArgs) Handles SplitContainer1.Panel1.ControlAdded 
    SplitContainer1.SplitterDistance += e.Control.Height 
    End Sub 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim addPanel As New Panel 
    addPanel.BorderStyle = BorderStyle.FixedSingle 
    addPanel.Size = New Size(SplitContainer1.Panel1.ClientSize.Width, 100) 
    addPanel.Location = New Point(0, SplitContainer1.SplitterDistance) 
    addPanel.Anchor = AnchorStyles.Left Or AnchorStyles.Top Or AnchorStyles.Right 
    SplitContainer1.Panel1.Controls.Add(addPanel) 
    End Sub 

End Class 

SmallPanel là một bảng điều khiển tôi đặt trong Panel1 của SplitContainer và thêm một nút để bổ sung thêm tấm của họ.

+0

Điều đó sẽ hiệu quả nhưng tôi đã hy vọng một điều gì đó tự động thực hiện. Chỉ có thực sự một điều khiển trong bảng điều khiển phía trên, một usercontrol. Điều khiển đó có một bảng điều khiển flowlayout trong nó, và tôi đã có thể thích bảng điều khiển splitcontainer hàng đầu để điều chỉnh kích thước của nó đến kích thước của bảng điều khiển flowlayout trong usercontrol ... Cảm ơn câu trả lời của bạn anyway. – MarioDS

+0

@MarioDeSchaepmeester Nếu FLP nằm trong UC, thì rõ ràng bạn cần phải có UC thay đổi kích thước đã có (đó là những gì nó giống như âm thanh). Chỉ cần móc vào sự kiện thay đổi kích thước của UC để thiết lập 'SplitterDistance' – LarsTech

+0

Ồ đúng rồi, tôi sẽ cố gắng, cảm ơn. – MarioDS

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