| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
-
- using System;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing.Printing;
- namespace Dongke.WinForm.Controls.InvoiceLayout
- {
- internal partial class PaperAreaSetting : Setting
- {
- #region 成员变量
- private static DataTable _paperSizes; // 纸张尺寸一览
- private bool _isSizeChanged = false;
- private bool _allowChangeSize = false;
- private int _indexA4 = -1;
- #endregion 成员变量
- #region 属性
- /// <summary>
- /// 纸张的宽(mm)
- /// </summary>
- [DefaultValue(210)]
- public float PaperWidth
- {
- get
- {
- return System.Convert.ToSingle(numerWidth.Value);
- }
- set
- {
- decimal d = System.Convert.ToDecimal(value);
- if (d < numerWidth.Minimum)
- {
- d = numerWidth.Minimum;
- }
- else if (numerWidth.Maximum < d)
- {
- d = numerWidth.Maximum;
- }
- if (numerWidth.Value != d)
- {
- _isSizeChanged = true;
- numerWidth.Value = d;
- }
- }
- }
- /// <summary>
- /// 纸张的高(mm)
- /// </summary>
- [DefaultValue(297)]
- public float PaperHeight
- {
- get
- {
- return System.Convert.ToSingle(numerHeight.Value);
- }
- set
- {
- decimal d = System.Convert.ToDecimal(value);
- if (d < numerHeight.Minimum)
- {
- d = numerHeight.Minimum;
- }
- else if (numerHeight.Maximum < d)
- {
- d = numerHeight.Maximum;
- }
- if (numerHeight.Value != d)
- {
- _isSizeChanged = true;
- numerHeight.Value = d;
- }
- }
- }
- #endregion 属性
- #region 构造函数
- /// <summary>
- /// 构造函数
- /// </summary>
- public PaperAreaSetting()
- {
- InitializeComponent();
- dgrdPaperSize.AutoGenerateColumns = false;
- InitializePaperSize();
- }
- #endregion 构造函数
- #region 函数
- /// <summary>
- /// 纸张尺寸一览
- /// </summary>
- private void InitializePaperSize()
- {
- if (_paperSizes == null)
- {
- _paperSizes = new DataTable();
- _paperSizes.TableName = "PaperSizes";
- _paperSizes.Columns.Add("SizeName", typeof(string));
- _paperSizes.Columns.Add("Width", typeof(float));
- _paperSizes.Columns.Add("Height", typeof(float));
- }
- else
- {
- _paperSizes.Clear();
- }
- float height = 0;
- float width = 0;
- int index = 0;
- PrintDocument pd = new PrintDocument();
- foreach (PaperSize ps in pd.PrinterSettings.PaperSizes)
- {
- DataRow dr = _paperSizes.NewRow();
- height = LayoutCommon.Inch100ToMillimeter(ps.Height);
- width = LayoutCommon.Inch100ToMillimeter(ps.Width);
- dr[0] = string.Format("{0} {1:0}mm×{2:0}mm",
- ps.PaperName,
- width,
- height);
- dr[1] = Math.Round(width);
- dr[2] = Math.Round(height);
- _paperSizes.Rows.Add(dr);
- if (ps.PaperName.StartsWith("A4")
- && 210.0f.Equals(dr[1])
- && 297.0f.Equals(dr[2])
- && _indexA4 < 0)
- {
- _indexA4 = index;
- }
- index++;
- }
- dgrdPaperSize.DataSource = _paperSizes;
- }
- #endregion 函数
- #region 事件处理
- /// <summary>
- /// shown
- /// </summary>
- /// <param name="sender">指定的对象</param>
- /// <param name="e">提供的事件数据</param>
- private void PaperAreaSetting_Shown(object sender, EventArgs e)
- {
- // 新建时选择A4纸张
- if (_isSizeChanged || _indexA4 < 0)
- {
- dgrdPaperSize.ClearSelection();
- }
- else
- {
- dgrdPaperSize.Focus();
- dgrdPaperSize.Rows[_indexA4].Selected = true;
- dgrdPaperSize.CurrentCell = dgrdPaperSize.Rows[_indexA4].Cells[0];
- }
- _allowChangeSize = true;
- }
- /// <summary>
- /// 【纸张尺寸一览】选择
- /// </summary>
- /// <param name="sender">指定的对象</param>
- /// <param name="e">提供的事件数据</param>
- private void dgrdPaperSize_Leave(object sender, EventArgs e)
- {
- dgrdPaperSize.ClearSelection();
- }
- /// <summary>
- /// 【纸张尺寸一览】选择
- /// </summary>
- /// <param name="sender">指定的对象</param>
- /// <param name="e">提供的事件数据</param>
- private void dgrdPaperSize_SelectionChanged(object sender, EventArgs e)
- {
- if (dgrdPaperSize.CurrentRow != null && _allowChangeSize
- && 0 < dgrdPaperSize.SelectedRows.Count)
- {
- PaperHeight =
- System.Convert.ToSingle(dgrdPaperSize.CurrentRow.Cells["colHeight"].Value);
- PaperWidth =
- System.Convert.ToSingle(dgrdPaperSize.CurrentRow.Cells["colWidth"].Value);
- }
- }
- #endregion 事件处理
- }
- }
|