如何在代码中调整整个ultragrid控件的大小以仅显示其内容? 没有空格(问题是里面的数据表有时很小)
我有:
-----------------------------
| | | | blank |
| | | | |
| | | | |
| ------------ blank |
| |
| blank |
|____________________________|
我希望边框紧贴网格。我试过了: a)读取DefaultLayout.Bands(0).GetExtent()〜总是给出相同的数字 b)读取数据源大小/高度,并且〜总是给出相同的数字
我是否需要处理一些更改布局事件?或者这是需要处理的网格属性文件?
答案 0 :(得分:1)
在任意情况下确定宽度都非常困难,因为网格有很多选项。多个波段,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;
}
就像我说的那样,这只能在一个简单的情况下使用一个乐队。
答案 1 :(得分:-1)
您可以使用网格的DisplayLayout的AutoFitStyle属性。使用以下行,将调整所有列的大小,并且不会有空格:
ultraGrid1.DisplayLayout.AutoFitStyle = Infragistics.Win.UltraWinGrid.AutoFitStyle.ResizeAllColumns;
有关此媒体资源的详情,请访问this链接。