调整Infrasgistics UltraGrid的大小,使其完全适合其内容

本文关键字:UltraGrid Infrasgistics 调整 | 更新日期: 2023-09-27 18:24:54

如何在代码中调整整个超网格控件的大小以仅显示其内容?没有空格(问题是里面的数据表有时小有时大)

我有:

-----------------------------
|   |   |    |    blank      |
|   |   |    |               |
|   |   |    |               |
| ------------      blank    |
|                            |
|   blank                    |
|____________________________|

我希望边界与网格紧密相连。我尝试过:a) read DefaultLayout.Bands(0).GetExtent()~总是给出相同的数字b) 读取数据源大小/高度,并且~总是给出相同的数字

我需要处理一些更改布局事件吗?或者这是需要处理的网格的某个属性文件?

调整Infrasgistics UltraGrid的大小,使其完全适合其内容

在任意情况下确定宽度都非常困难,因为网格有很多选项。多波段、行布局、重叠边界、滚动条、卡片视图等

在使用单个标注栏的最简单情况下,标注栏上的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;

有关此属性的更多信息,请访问此链接。