Tôi có thể không sử dụng quyền kiểm soát những gì tôi muốn. Tôi đang điền một bảng với các điều khiển và tôi muốn mỗi cột tự động kích thước để các điều khiển chứa bên trong nó. Ví dụ: một cột các hộp văn bản sẽ rộng hơn một cột các hộp kiểm. Tôi không muốn fiddle với đo nếu tôi có thể giúp nó, do sự phức tạp của hệ điều hành khác nhau, DPI khác nhau, phông chữ khác nhau, vv Bảng có thể mở rộng theo chiều ngang để phù hợp với điều khiển, với một thanh cuộn. Làm thế nào điều này có thể với một TableLayoutPanel - hoặc một số điều khiển khác?TableLayoutPanel sizing
Cảm ơn.
Edited thêm mã:
private void UpdateLocations()
{
tableLayoutPanel1.RowCount = CurrentSchedule.location.Length + 1;
tableLayoutPanel1.ColumnCount = 7;
int row = 1;
int timeWidth = TextRenderer.MeasureText("00:00:00x", tableLayoutPanel1.Font).Width;
Label lab = new Label();
lab.Text = "Location";
tableLayoutPanel1.Controls.Add(lab, 0, 0);
lab = new Label();
lab.Text = "Arrive";
tableLayoutPanel1.Controls.Add(lab, 1, 0);
lab = new Label();
lab.Text = "Depart";
tableLayoutPanel1.Controls.Add(lab, 2, 0);
lab = new Label();
lab.Text = "Pass?";
tableLayoutPanel1.Controls.Add(lab, 3, 0);
lab = new Label();
lab.Text = "Path";
tableLayoutPanel1.Controls.Add(lab, 4, 0);
lab = new Label();
lab.Text = "Plat";
tableLayoutPanel1.Controls.Add(lab, 5, 0);
lab = new Label();
lab.Text = "Line";
tableLayoutPanel1.Controls.Add(lab, 6, 0);
foreach (location loc in CurrentSchedule.location)
{
TextBox tb = new TextBox();
tb.Text = loc.locationID;
tableLayoutPanel1.Controls.Add(tb, 0, row);
tb = new TextBox();
tb.Text = loc.arrivalTime;
tb.Width = timeWidth;
tableLayoutPanel1.Controls.Add(tb, 1, row);
tb = new TextBox();
tb.Text = loc.departureTime;
tb.Width = timeWidth;
tableLayoutPanel1.Controls.Add(tb, 2, row);
CheckBox cb = new CheckBox();
cb.Checked = loc.passingTime;
tableLayoutPanel1.Controls.Add(cb, 3, row);
tb = new TextBox();
tb.Text = loc.pathCode;
tableLayoutPanel1.Controls.Add(tb, 4, row);
tb = new TextBox();
tb.Text = loc.platformCode;
tableLayoutPanel1.Controls.Add(tb, 5, row);
tb = new TextBox();
tb.Text = loc.lineCode;
tableLayoutPanel1.Controls.Add(tb, 6, row);
row++;
}
/*for (int idx = 0; idx < tableLayoutPanel1.RowCount; idx++)
{
tableLayoutPanel1.RowStyles[idx].SizeType = SizeType.AutoSize;
}
for (int idx = 0; idx < tableLayoutPanel1.ColumnCount; idx++)
{
tableLayoutPanel1.ColumnStyles[idx].SizeType = SizeType.AutoSize;
}*/
}
(Có nó cần refactoring nặng - Tôi chỉ cố gắng để làm cho nó làm việc đầu tiên)
Các bit nhận xét ra gây ngoài giới hạn trường hợp ngoại lệ, thậm chí mặc dù hợp lý (với tôi) nó không nên. Phạm vi xuất hiện giới hạn ở bất kỳ thứ gì tôi đặt vào thời gian thiết kế, không phải lúc chạy.
Bạn có bao nhiêu cột? – CharithJ
Nếu một cột cụ thể chỉ có các hộp kiểm tại sao chúng cần phải thay đổi kích thước? – CharithJ
Các cột không cần phải tự động thay đổi kích thước, nhưng được đặt thành kích thước cụ thể khi các điều khiển được thêm vào. Tại thời điểm này tôi đang sử dụng kích thước tự động có nghĩa là tất cả các cột có cùng chiều rộng. – GeoffM