[英]Resize Infragistics UltraGrid to fit its content perfectly
如何在代碼中調整整個超網格控件的大小以僅顯示其內容? 沒有空格(問題是里面的數據表有時很小)
我有:
-----------------------------
| | | | blank |
| | | | |
| | | | |
| ------------ blank |
| |
| blank |
|____________________________|
而且我希望邊框緊貼網格。 我嘗試過:a)讀取DefaultLayout.Bands(0).GetExtent()〜總是給出相同的數字b)讀取數據源的大小/高度和〜總是給出相同的數字
我是否需要處理一些更改布局事件? 或者這是需要處理的網格屬性文件?
在任何情況下確定寬度都非常困難,因為網格有很多選擇。 多個波段,RowLayouts,重疊邊框,滾動條,卡片視圖等。
在帶有單個波段的最簡單的情況下,波段上的GetExtent方法應該可以幫助您完成大部分工作。 如果它不適合你,那么我的猜測是時間問題。 網格異步執行大量度量計算,因此您需要確保網格繪制,以便在嘗試使用GetExtent或其他度量之前執行所有計算。
然后你只需要考慮可以通過UIElements完成的滾動條和邊框。
private void AutoSizeGridToContents(Infragistics.Win.UltraWinGrid.UltraGrid ultraGrid)
{
UltraGridLayout layout = ultraGrid.DisplayLayout;
UltraGridBand rootBand = layout.Bands[0];
int extent = rootBand.GetExtent(BandOrigin.PreRowArea);
UIElement gridElement = layout.UIElement;
UIElementBorderStyle borderStyle = gridElement.BorderStyle;
Border3DSide borderSides = gridElement.BorderSides;
UIElementBorderWidths borderWidths = DrawUtility.CalculateBorderWidths(borderStyle, borderSides, gridElement);
extent += borderWidths.Left + borderWidths.Right;
UIElement scrollbarUIElement = gridElement.GetDescendant(typeof(RowScrollbarUIElement));
if (null != scrollbarUIElement)
extent += scrollbarUIElement.Rect.Width;
ultraGrid.Width = extent;
}
就像我說的那樣,這種方法最簡單,只有一個樂隊。
您可以使用網格的DisplayLayout的AutoFitStyle屬性。 使用以下行,將調整所有列的大小,並且不會有空格:
ultraGrid1.DisplayLayout.AutoFitStyle = Infragistics.Win.UltraWinGrid.AutoFitStyle.ResizeAllColumns;
有關此屬性的更多信息,請訪問此鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.