簡體   English   中英

調整Infragistics UltraGrid的大小以完美地適應其內容

[英]Resize Infragistics UltraGrid to fit its content perfectly

如何在代碼中調整整個超網格控件的大小以僅顯示其內容? 沒有空格(問題是里面的數據表有時很小)

我有:

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

就像我說的那樣,這種方法最簡單,只有一個樂隊。

您可以使用網格的DisplayLayout的AutoFitStyle屬性。 使用以下行,將調整所有列的大小,並且不會有空格:

ultraGrid1.DisplayLayout.AutoFitStyle = Infragistics.Win.UltraWinGrid.AutoFitStyle.ResizeAllColumns;

有關此屬性的更多信息,請訪問鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM