Source/Ribbon/RibbonTabItemContainer.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections;
using System.Text;

namespace DevComponents.DotNetBar
{
    internal class RibbonTabItemContainer : GenericItemContainer
    {
        protected override bool OnBeforeLayout()
        {
            if (this.Orientation != eOrientation.Horizontal)
                return true;

            ArrayList ribbonTabItems = new ArrayList();
            int totalWidth = 0;
            int totalRibbonTabItemsWidth = 0;
            int minimumSize = 24;
            int availableWidth = this.WidthInternal - (this.PaddingLeft + this.PaddingRight);

            foreach (BaseItem item in this.SubItems)
            {
                if (!item.Visible)
                    continue;
                item.RecalcSize();
                totalWidth += (item.WidthInternal + this.ItemSpacing);
                if (item is RibbonTabItem)
                {
                    // Reset reduced size flag
                    ((RibbonTabItem)item).ReducedSize = false;
                    ribbonTabItems.Add(item);
                    totalRibbonTabItemsWidth += (item.WidthInternal + this.ItemSpacing);
                }
            }

            int totalReduction = totalWidth - availableWidth;

            if (totalWidth > availableWidth && totalRibbonTabItemsWidth > 0)
            {
                if (totalReduction >= totalRibbonTabItemsWidth - (minimumSize * ribbonTabItems.Count + ribbonTabItems.Count - 1))
                {
                    foreach (RibbonTabItem item in ribbonTabItems)
                    {
                        item.WidthInternal = minimumSize;
                        item.ReducedSize = true;
                    }
                }
                else
                {
                    float reduction = 1 - (float)totalReduction / (float)totalRibbonTabItemsWidth;
                    bool reducedSize = false;
                    if (reduction <= .75)
                        reducedSize = true;
                    for(int i=0;i<ribbonTabItems.Count;i++)
                    {
                        RibbonTabItem item = ribbonTabItems[i] as RibbonTabItem;
                        item.ReducedSize = reducedSize;
                        if (i == ribbonTabItems.Count - 1)
                        {
                            item.WidthInternal -= totalReduction;
                        }
后面还有 16 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。