微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 调整Infragistics UltraGrid的大小以完美契合其内容

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

我有

-----------------------------
|   |   |    |    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;
    }

就像我说的那样,这种方法最简单,只有一个乐队.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐