using System; using System.Drawing; namespace GoldPrinter { public class Outer : Printer, IDisposable { private bool _IsAverageColsWidth; protected DrawGrid mdrawGrid; protected bool mblnHadInitialized; public bool IsAverageColsWidth { get { return this._IsAverageColsWidth; } set { this._IsAverageColsWidth = value; } } public object DataSource { get { return this.mdrawGrid.DataSource; } set { this.mdrawGrid.DataSource = value; if (this.DataSource.GetType().ToString() == "System.String[]" || this.DataSource.GetType().ToString() == "System.String[,]" || this.DataSource.GetType().ToString() == "System.Data.DataTable") { this.mblnHadInitialized = true; } } } public string[,] Text { get { return this.mdrawGrid.GridText; } set { this.mdrawGrid.GridText = value; this.mblnHadInitialized = true; } } public bool CanDraw { get { return this.mblnHadInitialized; } } public int RowHeight { get { return this.mdrawGrid.PreferredRowHeight; } set { this.mdrawGrid.PreferredRowHeight = value; } } public int Rows { get { return this.mdrawGrid.Rows; } } public int Cols { get { return this.mdrawGrid.Cols; } } public int[] ColsWidth { get { return this.mdrawGrid.ColsWidth; } set { this.mdrawGrid.ColsWidth = value; } } public override int Height { get { return this.mdrawGrid.Rows * this.mdrawGrid.PreferredRowHeight; } } public Outer() { this._IsAverageColsWidth = true; this.mblnHadInitialized = false; this.IsDrawAllPage = false; this.mdrawGrid = new DrawGrid(); this.mdrawGrid.AlignMent = AlignFlag.Left; this.mdrawGrid.ColsAlignString = ""; this.mdrawGrid.Border = GridBorderFlag.None; this.mdrawGrid.Line = GridLineFlag.None; this.mdrawGrid.Merge = GridMergeFlag.None; this.Font = new Font("宋体", 11f); this.mdrawGrid.PreferredRowHeight = this.Font.Height; this.mdrawGrid.Initialize(0, 0); } public virtual void Initialize(int rows, int cols) { this.mblnHadInitialized = true; this.mdrawGrid.Initialize(rows, cols); } public virtual void SetText(int row, int col, string text) { this.mdrawGrid.SetText(row, col, text); } public virtual void SetText(char rowSplit, char colSplit, string text) { this.mdrawGrid.SetText((int)rowSplit, (int)colSplit, text); } public virtual string GetText(int row, int col) { return this.mdrawGrid.GetText(row, col); } public override void Draw() { if (this.mblnHadInitialized) { base.Draw(); this.mdrawGrid.Rectangle = new Rectangle(base.Rectangle.X + base.MoveX, base.Rectangle.Y + base.MoveY, base.Rectangle.Width, base.Rectangle.Height); this.mdrawGrid.Graphics = base.Graphics; if (this._IsAverageColsWidth) { this.mdrawGrid.Width = this.mdrawGrid.Rectangle.Width; this.mdrawGrid.ColsWidth = this.mdrawGrid.GetAverageColsWidth(); } this.mdrawGrid.Draw(); return; } throw new Exception("对象的行列数还未初始,请用Initialize()进行操作!"); } public override void Dispose() { this.mdrawGrid.Dispose(); } } }