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

185 lines
3.1 KiB
C#

using System;
using System.Diagnostics;
using CPF.Drawing;
using CPF.ReoGrid.Events;
namespace CPF.ReoGrid
{
public class RowHeader : ReoGridHeader
{
internal RowHeader(Worksheet sheet) : base(sheet)
{
}
public int Top { get; internal set; }
internal ushort InnerHeight { get; set; }
public ushort Height
{
get
{
return this.InnerHeight;
}
set
{
this.VerifyWorksheet();
base.Worksheet.SetRowsHeight(this.Row, 1, value);
}
}
internal ushort LastHeight { get; set; }
public int Bottom
{
get
{
return this.Top + (int)this.InnerHeight;
}
internal set
{
int num = value - this.Top;
bool flag = num < 0;
if (flag)
{
num = 0;
}
this.InnerHeight = (ushort)num;
}
}
internal int Row { get; set; }
public override int Index
{
get
{
return this.Row;
}
}
public string Text
{
get
{
return this.text;
}
set
{
this.text = value;
bool flag = base.Worksheet != null;
if (flag)
{
base.Worksheet.RequestInvalidate();
}
}
}
public Color? TextColor
{
get
{
return this.textColor;
}
set
{
bool flag = this.textColor != value;
if (flag)
{
this.textColor = value;
bool flag2 = base.Worksheet != null;
if (flag2)
{
base.Worksheet.RequestInvalidate();
}
}
}
}
internal WorksheetRangeStyle InnerStyle { get; set; }
public RowHeaderStyle Style
{
get
{
bool flag = this.refStyle == null;
if (flag)
{
this.refStyle = new RowHeaderStyle(base.Worksheet, this);
}
return this.refStyle;
}
}
public bool IsAutoHeight { get; set; }
public override bool IsVisible
{
get
{
return this.InnerHeight > 0;
}
set
{
this.VerifyWorksheet();
if (value)
{
base.Worksheet.ShowRows(this.Row, 1);
}
else
{
base.Worksheet.HideRows(this.Row, 1);
}
}
}
private void VerifyWorksheet()
{
bool flag = base.Worksheet == null;
if (flag)
{
throw new Exception("Row header must be associated to a grid instance.");
}
}
public void FitHeightToCells(bool byAction = false)
{
base.Worksheet.AutoFitRowHeight(this.Row, byAction);
}
internal RowHeader Clone(Worksheet newSheet)
{
return new RowHeader(newSheet)
{
Top = this.Top,
InnerHeight = this.InnerHeight,
InnerStyle = ((this.InnerStyle == null) ? null : WorksheetRangeStyle.Clone(this.InnerStyle)),
IsAutoHeight = this.IsAutoHeight,
TextColor = this.TextColor,
text = this.text,
Body = base.Body,
Row = this.Row,
LastHeight = this.LastHeight
};
}
//[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public event EventHandler<RowsHeightChangedEventArgs> HeightChanged;
internal void RaiseHeightChangedEvent()
{
bool flag = this.HeightChanged != null;
if (flag)
{
this.HeightChanged(this, new RowsHeightChangedEventArgs(this.Row, 1, (int)this.InnerHeight));
}
}
private string text;
private Color? textColor;
private RowHeaderStyle refStyle = null;
}
}