如何在代码中调整整个超网格控件的大小以仅显示其内容?
没有空格(问题是里面的数据表有时很小)
没有空格(问题是里面的数据表有时很小)
我有:
----------------------------- | | | | 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] 举报,一经查实,本站将立刻删除。