加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 20:56:57 所属栏目:百科 来源:网络整理
导读:如何在代码中调整整个超网格控件的大小以仅显示其内容? 没有空格(问题是里面的数据表有时很小) 我有: -----------------------------| | | | blank || | | | || | | | || ------------ blank || || blank ||____________________________| 而且我希望边框
如何在代码中调整整个超网格控件的大小以仅显示其内容?
没有空格(问题是里面的数据表有时很小)

我有:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读