在我的一種形式中,datagridview顯示來自數據庫的數據(當然數據的數量(所以行數)可以改變)。數據庫連接處於表單加載事件中。我只是無法弄清楚整個datagridview的高度是如何自動調整的,具體取決於它顯示的行數。winforms:datagridview:height(autosize)取決於行數
9
A
回答
4
如果設置DataGridView.AutoSize == true,那麼隨着添加更多行,網格變長。否則,你會得到滾動條。除非你設置了ScrollBars == Null ||水平,在這種情況下,行將消失在結尾。
出於某種原因,DataGridView.AutoSize只能以編程方式設置。當你把網格放入一個可自動化的控件時,會出現一些奇怪的行爲。它似乎沒有響應網格的大小。
我結束了從列,行,標題,邊距,填充和邊框尺寸計算網格的預期大小,然後調整包含網格的控件的大小並將網格固定在四邊。感覺非常笨重,但這是我能想到的最好的。如果你還在附近,評論,我會看看我能否找到代碼,我手邊沒有。
1
MSDN說:「此屬性與此類無關。」
9
這是我好不容易纔找到,並且它運行良好,到目前爲止:
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;
}
多虧了這一點,我封裝我在用戶控件的DataGridView這樣我就可以正確地執行自動調整大小:
// 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;
}
}
我沒有嘗試(但)直接從DataGridView構建自定義控件來實現此目的。
0
這就是我所做的。設置DataGridView的高度,你可以使用它的Set Height屬性。在表單加載中,你可以使用這段代碼來隱藏datagridview。 dataGridViewName.Height = 0;
然後從數據庫中獲取行時。我們可以使用下面的方法根據行數獲取datagridview Height。
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. 取決於值行
- 2. 取決於兩行
- 3. Mysql計數行數取決於日期
- 4. 取決於參數
- 5. slickgrid:顏色行取決於數據
- 6. 返回結果取決於行計數
- 7. 取決於行號的函數
- 8. 內連接取決於行
- 9. 取決於multple行的場
- 10. PHP:取決於正則表達式組值取決於行?
- 11. 取代DataFrame中的行取決於值
- 12. 取決於MSF決策的參數
- 13. GroupBox autosize
- 14. LongListMultiSelector取決於其數量
- 15. 計數出現取決於
- 16. 取決於搜索參數
- 17. 取決於模板參數
- 18. 其中取決於參數
- 19. 使用取決於參數
- 20. 取決於數據點
- 21. 取決於頁
- 22. 取決於
- 23. 取決於DIV
- 24. 取決於
- 25. 取決於值
- 26. 可變數組值取決於行數的增加
- 27. 取決於構造函數的可運行函數
- 28. 動態分頁取決於mySQL數據庫中的行數
- 29. ContentPanel AutoSize gxt
- 30. Android的scrollView autosize
這對我很有效,但我必須在+符號前加上括號。我相信這是使用?/:操作符的「操作順序」問題。 – 2014-09-18 04:52:31
好點。我添加了括號來消除有關這種棘手運算符優先級的疑問。 – Larry 2014-09-18 06:13:40