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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。