2012-05-08 32 views
5

Tôi có một bảng điều khiển với hai điều khiển bên trong. Tôi muốn họ được dán vào biên giới của bảng điều khiển (bảng điều khiển có một số chiều rộng và chiều cao mà không thể thay đổi) nhưng có khả năng thay đổi kích thước số lượng không gian họ (điều khiển) nhận được từ bảng theo hướng thẳng đứng.C# hình thức giành chiến thắng làm cho các điều khiển có thể thay đổi kích thước

panel.Controls.Add(listview1); 
panel.Controls.Add(listview2); 

Hai danh sách xem được đặt cái khác (theo chiều dọc). Tôi muốn có khả năng "thay đổi chiều cao" của chúng (bằng cách chọn đường viền giữa chúng để thay đổi kích thước).

Tôi hy vọng bạn hiểu ý tôi. Nhờ sự giúp đỡ trước.

+2

Về cơ bản, bạn muốn có thể thay đổi khu vực mà mỗi chế độ xem danh sách chiếm trong vùng chứa chính nhưng có chia sẻ đường viền sao cho đường viền khác thu nhỏ để chiếm không gian còn lại? (chỉ để rõ ràng cho những người dùng khác) – RhysW

+0

Bạn có thể xem (ví dụ) tại điều khiển TableLayoutPanel trong WinForms. Bạn có thể sử dụng nó để tạo ra một số loại lưới. Liên kết: http://msdn.microsoft.com/en-us/library/h21wykkx.aspx và http://msdn.microsoft.com/en-us/library/system.windows.forms.tablelayoutpanel.aspx – Styxxy

+0

bạn muốn cho phép người dùng thay đổi kích thước của điều khiển theo cách thủ công bằng cách kéo các cạnh? – nawfal

Trả lời

1

Bạn đã cân nhắc sử dụng Anchor trên ListView chưa?

 this.panel1 = new System.Windows.Forms.Panel(); 
     this.listView1 = new System.Windows.Forms.ListView(); 
     this.listView2 = new System.Windows.Forms.ListView(); 
     this.panel1.SuspendLayout(); 
     this.SuspendLayout(); 
     // 
     // panel1 
     // 
     this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
     | System.Windows.Forms.AnchorStyles.Left) 
     | System.Windows.Forms.AnchorStyles.Right))); 
     this.panel1.Controls.Add(this.listView2); 
     this.panel1.Controls.Add(this.listView1); 
     this.panel1.Location = new System.Drawing.Point(12, 12); 
     this.panel1.Name = "panel1"; 
     this.panel1.Size = new System.Drawing.Size(413, 280); 
     this.panel1.TabIndex = 0; 
     // 
     // listView1 
     // 
     this.listView1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
     | System.Windows.Forms.AnchorStyles.Right))); 
     this.listView1.Location = new System.Drawing.Point(3, 0); 
     this.listView1.Name = "listView1"; 
     this.listView1.Size = new System.Drawing.Size(410, 97); 
     this.listView1.TabIndex = 0; 
     this.listView1.UseCompatibleStateImageBehavior = false; 
     // 
     // listView2 
     // 
     this.listView2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
     | System.Windows.Forms.AnchorStyles.Right))); 
     this.listView2.Location = new System.Drawing.Point(0, 183); 
     this.listView2.Name = "listView2"; 
     this.listView2.Size = new System.Drawing.Size(410, 97); 
     this.listView2.TabIndex = 1; 
     this.listView2.UseCompatibleStateImageBehavior = false; 
     // 
     // Form1 
     // 
     this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     this.ClientSize = new System.Drawing.Size(437, 304); 
     this.Controls.Add(this.panel1); 
     this.Name = "Form1"; 
     this.Text = "Form1"; 
     this.panel1.ResumeLayout(false); 
     this.ResumeLayout(false); 
2

Đặt thuộc tính doc của từ trên lên trên. Thêm thanh Splitter với hướng dọc trong cùng một vùng chứa (bảng điều khiển). Đặt thuộc tính Dock thấp hơn để lấp đầy. Một cách để thực hiện điều đó.

2

Tôi đồng ý với Paul rằng SplitContainer là những gì bạn đang tìm kiếm. Tôi sẽ thêm rằng bạn cần phải đặt các thuộc tính Dock và Anchor của các điều khiển mà bạn đặt bên trong vùng chứa chia nhỏ. Nếu bạn đặt thuộc tính Dock của điều khiển con thành Fill, nó sẽ mở rộng để lấp đầy toàn bộ vùng chứa, bất kể bảng điều khiển có kích thước như thế nào. Thuộc tính Anchor được sử dụng nếu có nhiều điều khiển trong bảng điều khiển. Trong trường hợp đó, bạn đặt thuộc tính Anchor của điều khiển con để báo cho phần tử điều khiển con biết các cạnh "dính" vào bên của thùng chứa. Xem this page để có cái nhìn toàn diện hơn về hai thuộc tính đó.

Ngoài ra, bạn sẽ muốn đặt các thuộc tính Dock hoặc Anchor trên chính điều khiển SplitContainer. Điều đó sẽ làm cho nó thay đổi kích thước khi biểu mẫu thay đổi kích thước. Sau đó, đặt các thuộc tính Anchor/Dock trên các nút điều khiển con bên trong SplitContainer sẽ khiến các nút điều khiển con đổi kích thước khi vùng chứa thay đổi kích thước.

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