using System.Data; using System.Drawing; using System.Windows.Forms; namespace Dongke.WinForm.Controls.InvoiceLayout { internal partial class GridItemSetting : Setting { #region 成员变量 private bool _isTransparent = false; // 背景是否透明 private Color _fillColor = Color.Black; // 背景颜色 private bool _isColChanged = false; #endregion 成员变量 #region 属性 /// /// 列属性是否改变 /// public bool ColumnsChanged { get { return _isColChanged; } } /// /// X(mm) /// public float ShapeLocationX { get { return System.Convert.ToSingle(numLoctionX.Value); } set { decimal d = System.Convert.ToDecimal(value); if (d < numLoctionX.Minimum) { d = numLoctionX.Minimum; } else if (numLoctionX.Maximum < d) { d = numLoctionX.Maximum; } numLoctionX.Value = d; } } /// /// Y(mm) /// public float ShapeLocationY { get { return System.Convert.ToSingle(numLoctionY.Value); } set { decimal d = System.Convert.ToDecimal(value); if (d < numLoctionY.Minimum) { d = numLoctionY.Minimum; } else if (numLoctionY.Maximum < d) { d = numLoctionY.Maximum; } numLoctionY.Value = d; } } /// /// 宽(mm) /// public float ShapeWidth { get { return System.Convert.ToSingle(numWidth.Value); } set { decimal d = System.Convert.ToDecimal(value); if (d < numWidth.Minimum) { d = numWidth.Minimum; } else if (numWidth.Maximum < d) { d = numWidth.Maximum; } numWidth.Value = d; } } /// /// 高(mm) /// public float ShapeHeight { get { return System.Convert.ToSingle(numHeight.Value); } set { decimal d = System.Convert.ToDecimal(value); if (d < numHeight.Minimum) { d = numHeight.Minimum; } else if (numHeight.Maximum < d) { d = numHeight.Maximum; } numHeight.Value = d; } } /// /// 列头行高 /// public float HeadRowsHeight { get { return System.Convert.ToSingle(numHeadRowsHeight.Value); } set { decimal d = System.Convert.ToDecimal(value); if (d < numHeadRowsHeight.Minimum) { d = numHeadRowsHeight.Minimum; } else if (numHeadRowsHeight.Maximum < d) { d = numHeadRowsHeight.Maximum; } numHeadRowsHeight.Value = d; } } /// /// 线的颜色 /// public Color LineColor { get { return lblLineColor.BackColor; } set { lblLineColor.BackColor = value; if (lblLineColor.BackColor != Color.White) { lblLineBColor.BackColor = lblLineColor.BackColor; } else { lblLineBColor.BackColor = Color.Black; } } } /// /// 背景颜色 /// public Color FillColor { get { return _fillColor; } set { _fillColor = value; SetFillColor(); } } /// /// 线宽 /// public float LineWidth { get { return System.Convert.ToSingle(numLineWidth.Value); } set { decimal d = System.Convert.ToDecimal(value); if (d < numLineWidth.Minimum) { d = numLineWidth.Minimum; } else if (numLineWidth.Maximum < d) { d = numLineWidth.Maximum; } numLineWidth.Value = d; } } /// /// 背景是否透明 /// public bool Transparent { get { return _isTransparent; } set { _isTransparent = value; SetFillColor(); } } /// /// 是否显示列标题 /// public bool TitleVisible { get { return cbxTitleVisible.Checked; } set { cbxTitleVisible.Checked = value; } } /// /// 是否每页都显示列标题 /// public bool AlwaysTitleVisible { get { return cbxAlwaysTitleVisible.Checked; } set { cbxAlwaysTitleVisible.Checked = value; } } /// /// 行高 /// public float RowsHeight { get { return System.Convert.ToSingle(numRowsHeight.Value); } set { decimal d = System.Convert.ToDecimal(value); if (d < numRowsHeight.Minimum) { d = numRowsHeight.Minimum; } else if (numRowsHeight.Maximum < d) { d = numRowsHeight.Maximum; } numRowsHeight.Value = d; } } /// /// 一页显示的行数 /// public int RowsCount { get { return System.Convert.ToInt32(numRowsCount.Value); } set { decimal d = System.Convert.ToDecimal(value); if (d < numRowsCount.Minimum) { d = numRowsCount.Minimum; } else if (numRowsCount.Maximum < d) { d = numRowsCount.Maximum; } numRowsCount.Value = d; } } public GridItemColumnCollection Columns { get; set; } #endregion 属性 #region 构造函数 /// /// 构造函数 /// public GridItemSetting() { InitializeComponent(); } #endregion 构造函数 #region 函数 /// /// 设置背景颜色 /// private void SetFillColor() { if (_isTransparent) { lblFillColor.BackColor = Color.Empty; lblFillBColor.BackColor = Color.Empty; } else { lblFillColor.BackColor = _fillColor; if (_fillColor != Color.White) { lblFillBColor.BackColor = _fillColor; } else { lblFillBColor.BackColor = Color.Black; } } } #endregion 函数 #region 事件处理 /// /// Shown /// /// 指定的对象 /// 提供的事件数据 private void GridItemSetting_Shown(object sender, System.EventArgs e) { this.lisCols.DisplayMember = GridItemColumnCollection.DisplayMember; this.lisCols.DataSource = Columns; } /// /// 设置线的颜色 /// /// 指定的对象 /// 提供的事件数据 private void btnSelectLineColor_Click(object sender, System.EventArgs e) { colorDialog.Color = (lblLineColor.BackColor == Color.Transparent) ? Color.Empty : lblLineColor.BackColor; if (colorDialog.ShowDialog() == DialogResult.OK) { LineColor = colorDialog.Color; } } /// /// 设置背景颜色 /// /// 指定的对象 /// 提供的事件数据 private void btnSelectFillColor_Click(object sender, System.EventArgs e) { colorDialog.Color = _isTransparent ? Color.Empty : _fillColor; if (colorDialog.ShowDialog() == DialogResult.OK) { _fillColor = colorDialog.Color; Transparent = false; } } /// /// 设置线段是否透明 /// /// 指定的对象 /// 提供的事件数据 private void btnSelectLineTransparent_Click(object sender, System.EventArgs e) { lblLineColor.BackColor = Color.Transparent; lblLineBColor.BackColor = Color.Transparent; } /// /// 设置背景是否透明 /// /// 指定的对象 /// 提供的事件数据 private void btnFillTransparent_Click(object sender, System.EventArgs e) { Transparent = true; } #region 表格列编辑 /// /// 上移列 /// /// /// private void btnColUp_Click(object sender, System.EventArgs e) { if (lisCols.SelectedIndex < 1) { return; } int index = lisCols.SelectedIndex - 1; GridItemColumn gic = (lisCols.SelectedItem as GridItemColumn); gic.DisplayIndexInternal = index; gic = (lisCols.Items[index] as GridItemColumn); gic.DisplayIndexInternal = lisCols.SelectedIndex; Columns.UpdateColumnsOrder(); lisCols.DataSource = null; this.lisCols.DisplayMember = GridItemColumnCollection.DisplayMember; this.lisCols.DataSource = Columns; lisCols.SelectedIndex = index; _isColChanged = true; } /// /// 下移列 /// /// /// private void btnColDown_Click(object sender, System.EventArgs e) { if (lisCols.SelectedIndex < 0 || lisCols.SelectedIndex == Columns.Count - 1) { return; } int index = lisCols.SelectedIndex + 1; GridItemColumn gic = (lisCols.SelectedItem as GridItemColumn); gic.DisplayIndexInternal = index; gic = (lisCols.Items[index] as GridItemColumn); gic.DisplayIndexInternal = lisCols.SelectedIndex; Columns.UpdateColumnsOrder(); lisCols.DataSource = null; this.lisCols.DisplayMember = GridItemColumnCollection.DisplayMember; this.lisCols.DataSource = Columns; lisCols.SelectedIndex = index; _isColChanged = true; } /// /// 编辑列 /// /// /// private void btnColEdit_Click(object sender, System.EventArgs e) { if (lisCols.SelectedIndex < 0) { return; } int index = lisCols.SelectedIndex; GridItemColumn gic = (lisCols.SelectedItem as GridItemColumn); using (GridItemColumnSetting itemPropertySetting = new GridItemColumnSetting()) { itemPropertySetting.IsNew = false; itemPropertySetting.TextWidth = gic.Width; itemPropertySetting.Culture = gic.Culture; itemPropertySetting.LineSpaceHead = gic.LineSpaceHead; itemPropertySetting.CharacterSpaceHead = gic.CharacterSpaceHead; itemPropertySetting.CharacterCountHead = gic.CharacterCountHead; itemPropertySetting.TextAlignHead = gic.TextAlignHead; itemPropertySetting.TextAlignVerticalHead = gic.TextAlignVerticalHead; itemPropertySetting.TextColorHead = gic.TextColorHead; itemPropertySetting.TextFontHead = gic.FontHead; itemPropertySetting.WrapHead = gic.WrapHead; itemPropertySetting.LineSpace = gic.LineSpace; itemPropertySetting.CharacterSpace = gic.CharacterSpace; itemPropertySetting.CharacterCount = gic.CharacterCount; itemPropertySetting.TextAlign = gic.TextAlign; itemPropertySetting.TextAlignVertical = gic.TextAlignVertical; itemPropertySetting.TextPreview = gic.DisplayValue; itemPropertySetting.TextColor = gic.TextColor; itemPropertySetting.ItemStyle = gic.ItemStyle; itemPropertySetting.ColName = gic.Name; itemPropertySetting.HeaderText = gic.HeaderText; itemPropertySetting.TextFormat = gic.Format; itemPropertySetting.TextFont = gic.Font; itemPropertySetting.Wrap = gic.Wrap; itemPropertySetting.DefaultValue = gic.DefaultValue; itemPropertySetting.IsDataBinding = gic.IsDataBinding; itemPropertySetting.chkFixedRatio.Checked = gic.FixedRatio; itemPropertySetting.chkM.Checked = gic.PicMargin; itemPropertySetting.chkPic.Checked = gic.PicColumn; itemPropertySetting.chkFixedRatio.Enabled = gic.PicColumn; itemPropertySetting.chkM.Enabled = gic.PicColumn; DialogResult result = itemPropertySetting.ShowDialog(); if (result == DialogResult.OK) { gic.Width = itemPropertySetting.TextWidth; gic.LineSpaceHead = itemPropertySetting.LineSpaceHead; gic.CharacterSpaceHead = itemPropertySetting.CharacterSpaceHead; gic.CharacterCountHead = itemPropertySetting.CharacterCountHead; gic.TextAlignHead = itemPropertySetting.TextAlignHead; gic.TextAlignVerticalHead = itemPropertySetting.TextAlignVerticalHead; gic.TextColorHead = itemPropertySetting.TextColorHead; gic.FontHead = itemPropertySetting.TextFontHead; gic.WrapHead = itemPropertySetting.WrapHead; gic.LineSpace = itemPropertySetting.LineSpace; gic.CharacterSpace = itemPropertySetting.CharacterSpace; gic.CharacterCount = itemPropertySetting.CharacterCount; gic.Font = itemPropertySetting.TextFont; gic.Wrap = itemPropertySetting.Wrap; gic.TextAlign = itemPropertySetting.TextAlign; gic.TextAlignVertical = itemPropertySetting.TextAlignVertical; gic.TextColor = itemPropertySetting.TextColor; gic.DisplayValue = itemPropertySetting.TextPreview; gic.ItemStyle = itemPropertySetting.ItemStyle; gic.Name = itemPropertySetting.ColName; gic.HeaderText = itemPropertySetting.HeaderText; gic.Format = itemPropertySetting.TextFormat; gic.Culture = itemPropertySetting.Culture; gic.DefaultValue = itemPropertySetting.DefaultValue; gic.FixedRatio = itemPropertySetting.chkFixedRatio.Checked; gic.PicMargin = itemPropertySetting.chkM.Checked; gic.PicColumn = itemPropertySetting.chkPic.Checked; lisCols.DataSource = null; this.lisCols.DisplayMember = GridItemColumnCollection.DisplayMember; this.lisCols.DataSource = Columns; lisCols.SelectedIndex = index; _isColChanged = true; } } } /// /// 添加列 /// /// /// private void btnColAdd_Click(object sender, System.EventArgs e) { // 生成列名 string colName = Columns.GeNewColumnName(); Columns.Add(colName, colName); lisCols.DataSource = null; this.lisCols.DisplayMember = GridItemColumnCollection.DisplayMember; this.lisCols.DataSource = Columns; lisCols.SelectedIndex = lisCols.Items.Count - 1; _isColChanged = true; } /// /// 移除列 /// /// /// private void btnColRemove_Click(object sender, System.EventArgs e) { if (lisCols.SelectedIndex < 0) { return; } int index = lisCols.SelectedIndex; lisCols.SelectedIndex = (index < Columns.Count - 1) ? index : index - 1; Columns.RemoveAtInternal(index, false); lisCols.DataSource = null; this.lisCols.DisplayMember = GridItemColumnCollection.DisplayMember; this.lisCols.DataSource = Columns; lisCols.SelectedIndex = (index < Columns.Count) ? index : index - 1; _isColChanged = true; } #endregion 表格列编辑 private void cbxTitleVisible_CheckedChanged(object sender, System.EventArgs e) { cbxAlwaysTitleVisible.Enabled = cbxTitleVisible.Checked; } #endregion 事件处理 } }