CPF/CPF.ReoGrid/ColumnHeader.cs
2024-06-24 10:15:59 +08:00

169 lines
3.0 KiB
C#

using System;
using System.Diagnostics;
using CPF.Drawing;
using CPF.ReoGrid.Events;
namespace CPF.ReoGrid
{
public class ColumnHeader : ReoGridHeader
{
internal ColumnHeader(Worksheet sheet) : base(sheet)
{
}
public int Left { get; internal set; }
internal ushort InnerWidth { get; set; }
public ushort Width
{
get
{
return this.InnerWidth;
}
set
{
this.VerifyWorksheet();
base.Worksheet.SetColumnsWidth(this.Col, 1, value);
}
}
internal ushort LastWidth { get; set; }
internal int Col { get; set; }
public override int Index
{
get
{
return this.Col;
}
}
internal string RenderText { get; set; }
public string Text
{
get
{
return this.text;
}
set
{
this.text = value;
this.RenderText = ((value == null) ? RGUtility.GetAlphaChar((long)this.Col) : value);
bool flag = base.Worksheet != null;
if (flag)
{
base.Worksheet.RequestInvalidate();
}
}
}
public int Right
{
get
{
return this.Left + (int)this.InnerWidth;
}
internal set
{
int num = value - this.Left;
bool flag = num < 0;
if (flag)
{
num = 0;
}
this.InnerWidth = (ushort)num;
}
}
internal WorksheetRangeStyle InnerStyle { get; set; }
public ColumnHeaderStyle Style
{
get
{
bool flag = this.refStyle == null;
if (flag)
{
this.refStyle = new ColumnHeaderStyle(base.Worksheet, this);
}
return this.refStyle;
}
}
public bool IsAutoWidth { get; set; }
public override bool IsVisible
{
get
{
return this.InnerWidth > 0;
}
set
{
this.VerifyWorksheet();
if (value)
{
base.Worksheet.ShowColumns(this.Col, 1);
}
else
{
base.Worksheet.HideColumns(this.Col, 1);
}
}
}
private void VerifyWorksheet()
{
bool flag = base.Worksheet == null;
if (flag)
{
throw new Exception("Column header must be associated to worksheet instance.");
}
}
public Color? TextColor { get; set; }
public void FitWidthToCells(bool byAction = false)
{
base.Worksheet.AutoFitColumnWidth(this.Col, byAction);
}
internal ColumnHeader Clone(Worksheet newSheet)
{
return new ColumnHeader(newSheet)
{
Left = this.Left,
InnerWidth = this.InnerWidth,
InnerStyle = ((this.InnerStyle == null) ? null : new WorksheetRangeStyle(this.InnerStyle)),
IsAutoWidth = this.IsAutoWidth,
TextColor = this.TextColor,
text = this.text,
RenderText = this.RenderText,
Body = base.Body,
DefaultCellBody = base.DefaultCellBody,
Col = this.Col,
LastWidth = this.LastWidth
};
}
//[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public event EventHandler<ColumnsWidthChangedEventArgs> WidthChanged;
internal void RaiseWidthChangedEvent()
{
bool flag = this.WidthChanged != null;
if (flag)
{
this.WidthChanged(this, new ColumnsWidthChangedEventArgs(this.Col, 1, (int)this.InnerWidth));
}
}
private string text = null;
private ColumnHeaderStyle refStyle;
}
}