c# – 调整Infragistics UltraGrid的大小以完美契合其内容
发布时间:2020-12-15 20:56:57 所属栏目:百科 来源:网络整理
导读:如何在代码中调整整个超网格控件的大小以仅显示其内容? 没有空格(问题是里面的数据表有时很小) 我有: -----------------------------| | | | blank || | | | || | | | || ------------ blank || || blank ||____________________________| 而且我希望边框
如何在代码中调整整个超网格控件的大小以仅显示其内容?
没有空格(问题是里面的数据表有时很小) 我有: ----------------------------- | | | | blank | | | | | | | | | | | | ------------ blank | | | | blank | |____________________________| 而且我希望边框紧贴网格.我试过了: 我是否需要处理一些更改布局事件?或者这是需要处理的网格属性文件? 解决方法
在任何情况下确定宽度都非常困难,因为网格有很多选择.多个波段,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; } 就像我说的那样,这种方法最简单,只有一个乐队. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |