trong một biểu mẫu của tôi một dữ liệu hiển thị dữ liệu từ cơ sở dữ liệu (tất nhiên số lượng dữ liệu (số lượng hàng) có thể thay đổi). Kết nối cơ sở dữ liệu nằm trong sự kiện tải biểu mẫu. Tôi chỉ không thể tìm ra cách chiều cao của toàn bộ datagridview được tự động, tùy thuộc vào số hàng nó hiển thị.winforms: datagridview: height (autosize) tùy thuộc vào số hàng
Trả lời
Nếu bạn đặt DataGridView.AutoSize == true thì khi bạn thêm nhiều hàng, lưới sẽ dài hơn. Nếu không, bạn sẽ nhận được thanh cuộn. Trừ khi bạn đã đặt ScrollBars == Null || Ngang, trong trường hợp các hàng chỉ biến mất của phần cuối.
Vì một số lý do, DataGridView.AutoSize chỉ có thể được đặt theo chương trình. Và có một số hành vi kỳ lạ có thể quan sát được khi bạn đặt lưới bên trong một điều khiển tự động. Nó dường như không đáp ứng với kích thước của lưới điện.
Tôi đã kết thúc tính toán kích thước lưới dự kiến từ cột, hàng, tiêu đề, lề, đệm và kích thước đường viền, sau đó định kích thước điều khiển chứa lưới và neo lưới trên bốn mặt. Cảm thấy thực sự clunky nhưng nó là tốt nhất tôi có thể đến với. Nếu bạn vẫn còn xung quanh, bình luận và tôi sẽ xem nếu tôi có thể tìm thấy mã, tôi không có nó trên tay.
MSDN nói "Thuộc tính này không liên quan đến lớp học này".
Đây là những gì tôi cố gắng tìm kiếm, và nó chạy tốt cho đến nay:
int GetDataGridViewHeight(DataGridView dataGridView)
{
var sum = (dataGridView.ColumnHeadersVisible ? dataGridView.ColumnHeadersHeight : 0) +
dataGridView.Rows.OfType<DataGridViewRow>().Where(r => r.Visible).Sum(r => r.Height);
return sum;
}
Nhờ vậy, tôi gói gọn DataGridView của tôi trong một UserControl vì vậy tôi có thể thực hiện AutoSize một cách chính xác:
// This is in a user control where the datagrid is inside (Top docked)
protected override void OnResize(EventArgs e)
{
if (AutoSize)
{
var height = this.GetDataGridViewHeight(this.dataBoxGridView);
this.dataBoxGridView.Height = height;
this.Height = height +this.Padding.Top + this.Padding.Bottom;
}
}
Tôi chưa thử tạo điều khiển tùy chỉnh trực tiếp từ DataGridView để triển khai điều này.
Đây là cách tôi đã làm. để thiết lập chiều cao của DataGridView bạn có thể sử dụng tính năng Set Height.On form load của nó, bạn có thể sử dụng mã này để ẩn datagridview. dataGridViewName.Height = 0;
Sau đó, trong khi tìm nạp Hàng từ Cơ sở dữ liệu. chúng tôi có thể sử dụng phương pháp dưới đây để có được datagridview Chiều cao theo số hàng.
private int dataGridViewHeight()
{
int sum = this.dataGridViewName.ColumnHeadersHeight;
foreach (DataGridViewRow row in this.dataGridViewName.Rows)
sum += row.Height + 1; // I dont think the height property includes the cell border size, so + 1
return sum;
}
- 1. Thêm nút vào một Winforms DataGridView
- 2. Truy cập mục bị ràng buộc với hàng DataGridView (WinForms)
- 3. WinForms DataGridView cỡ chữ
- 4. C# WinForms DataGridView - Hàng liên tục được chọn!
- 5. Bắt số hàng trong DataGridView
- 6. Nhấp đúp vào hàng DataGridView?
- 7. Thêm cột mới vào một Winforms DataGridView qua mã
- 8. GroupBox autosize
- 9. Điền WinForms DataGridView Từ Anonymous LINQ Query
- 10. Siêu liên kết ô trong Winforms DataGridView
- 11. VS2010 - WinForms - DataGridView - Liên kết với DataSet
- 12. winForms + DataGridView ràng buộc vào một Danh sách <T>
- 13. C# datagridview hàng đơn hàng?
- 14. hàng datagridview nhấp
- 15. Chú giải công cụ phụ thuộc vào chuột trên một hàng trong dữ liệu (KHÔNG datagridview)
- 16. Danh sách các đối tượng Databind cho một DataGridView WinForms, nhưng không hiển thị một số thuộc tính công cộng
- 17. C màu nền # WinForms DataGridView render quá chậm
- 18. winforms - datagridview chiều cao hàng không thay đổi kích thước khi defaultcellstyle được đặt thành wrapmode
- 19. Làm cách nào để thêm hàng mới vào datagridview?
- 20. DataGridView - cách ẩn hàng "mới"?
- 21. Xóa nhiều hàng trong datagridview
- 22. WinForms - DataGridView - không có ô nào được chọn
- 23. C# Datagridview Tính toán hàng
- 24. Làm thế nào để Merge DataGridView di động trong Winforms
- 25. Tạo chuỗi tùy thuộc vào đối số mẫu
- 26. scala: mixins tùy thuộc vào loại đối số
- 27. Bộ điều khiển AngularJS tùy thuộc vào tham số URL
- 28. C# Winforms DataGridView với phân loại/lọc như Ms Excel
- 29. jquery simplemodal dynamic height
- 30. Không thể cho phép người dùng thêm hàng vào DataGridView với Danh sách <> Mã nguồn số
Điều này làm việc cho tôi, nhưng tôi phải đặt dấu ngoặc đơn quanh biểu thức trên cùng, trước dấu +. Tôi tin rằng đây là vấn đề "trật tự hoạt động" với toán tử? /:. –
Điểm tốt. Tôi đã thêm dấu ngoặc đơn để phân biệt bất kỳ nghi ngờ nào về ưu tiên vận hành khéo léo này. – Larry