您的位置:首页 > 编程语言 > C#

C#编码中,打印预览DataGridView的一段代码,稍作了修改,可以实现。

2012-02-25 11:12 936 查看
/// <summary>

/// 打印预览DataGridView公共类

/// Coin

/// 传递参数DataGridView的实体对象

/// </summary>

public static class PrintDGV

{

#region 相关私有变量

private static StringFormat StrFormat; // Holds content of a TextBox Cell to write by DrawString

private static StringFormat StrFormatComboBox; // Holds content of a Boolean Cell to write by DrawImage

private static Button CellButton; // Holds the Contents of Button Cell

private static CheckBox CellCheckBox; // Holds the Contents of CheckBox Cell

private static ComboBox CellComboBox; // Holds the Contents of ComboBox Cell

private static int TotalWidth; // Summation of Columns widths

private static int RowPos; // Position of currently printing row

private static bool NewPage; // Indicates if a new page reached

private static int PageNo; // Number of pages to print

private static ArrayList ColumnLefts = new ArrayList(); // Left Coordinate of Columns

private static ArrayList ColumnWidths = new ArrayList(); // Width of Columns

private static ArrayList ColumnTypes = new ArrayList(); // DataType of Columns

private static int CellHeight; // Height of DataGrid Cell

private static int RowsPerPage; // Number of Rows per Page

private static System.Drawing.Printing.PrintDocument printDoc = new System.Drawing.Printing.PrintDocument(); // PrintDocumnet Object used for printing

//private static string PrintTi<mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js"></mce:script><mce:script
type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js"></mce:script>tle = ""; // Header of pages

private static DataGridView dgv; // Holds DataGridView Object to print its contents

private static List<string> SelectedColumns = new List<string>(); // The Columns Selected by user to print.

private static List<string> AvailableColumns = new List<string>(); // All Columns avaiable in DataGrid

private static string PrintTitle; //Need to Print Titles

private static bool PrintAllRows = true; // True = print all rows, False = print selected rows

private static bool FitToPageWidth = true; // True = Fits selected columns to page width , False = Print columns as showed

private static int HeaderHeight = 0;

#endregion

/// <summary>

/// 打印预览DataGridView方法

/// </summary>

/// <param name="dgv1">DataGridView的实体对象</param>

public static void Print_DataGridView(DataGridView dgv1)

{

PrintPreviewDialog ppvw;

try

{

// Getting DataGridView object to print

dgv = dgv1;

// Getting all Coulmns Names in the DataGridView

AvailableColumns.Clear();

foreach (DataGridViewColumn c in dgv.Columns)

{

if (!c.Visible) continue;

AvailableColumns.Add(c.HeaderText);

}

// Showing the PrintOption Form

PrintOptions dlg = new PrintOptions(AvailableColumns);

if (dlg.ShowDialog() != DialogResult.OK) return;

PrintTitle = dlg.PrintTitle;

PrintAllRows = dlg.PrintAllRows;

FitToPageWidth = dlg.FitToPageWidth;

SelectedColumns = dlg.GetSelectedColumns();

RowsPerPage = 0;

ppvw = new PrintPreviewDialog();

ppvw.Document = printDoc;

// Showing the Print Preview Page

printDoc.BeginPrint += new System.Drawing.Printing.PrintEventHandler(PrintDoc_BeginPrint);

printDoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);

if (ppvw.ShowDialog() != DialogResult.OK)

{

printDoc.BeginPrint -= new System.Drawing.Printing.PrintEventHandler(PrintDoc_BeginPrint);

printDoc.PrintPage -= new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);

return;

}

// Printing the Documnet

printDoc.Print();

printDoc.BeginPrint -= new System.Drawing.Printing.PrintEventHandler(PrintDoc_BeginPrint);

printDoc.PrintPage -= new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

finally

{

printDoc.Dispose();

}

}

/// <summary>

/// 触发开始执行打印时的相关事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private static void PrintDoc_BeginPrint(object sender,System.Drawing.Printing.PrintEventArgs e)

{

try

{

// Formatting the Content of Text Cell to print

StrFormat = new StringFormat();

StrFormat.Alignment = StringAlignment.Near;

StrFormat.LineAlignment = StringAlignment.Center;

StrFormat.Trimming = StringTrimming.EllipsisCharacter;

// Formatting the Content of Combo Cells to print

StrFormatComboBox = new StringFormat();

StrFormatComboBox.LineAlignment = StringAlignment.Center;

StrFormatComboBox.FormatFlags = StringFormatFlags.NoWrap;

StrFormatComboBox.Trimming = StringTrimming.EllipsisCharacter;

ColumnLefts.Clear();

ColumnWidths.Clear();

ColumnTypes.Clear();

CellHeight = 0;

RowsPerPage = 0;

// For various column types

CellButton = new Button();

CellCheckBox = new CheckBox();

CellComboBox = new ComboBox();

// Calculating Total Widths

TotalWidth = 0;

foreach (DataGridViewColumn GridCol in dgv.Columns)

{

if (!GridCol.Visible) continue;

if (!PrintDGV.SelectedColumns.Contains(GridCol.HeaderText)) continue;

TotalWidth += GridCol.Width;

}

PageNo = 1;

NewPage = true;

RowPos = 0;

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

/// <summary>

/// 触发打印执行时的相关事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private static void PrintDoc_PrintPage(object sender,System.Drawing.Printing.PrintPageEventArgs e)

{

int tmpWidth, i;

int tmpTop = e.MarginBounds.Top;

int tmpLeft = e.MarginBounds.Left;

try

{

// Before starting first page, it saves Width & Height of Headers and CoulmnType

if (PageNo == 1)

{

foreach (DataGridViewColumn GridCol in dgv.Columns)

{

if (!GridCol.Visible) continue;

// Skip if the current column not selected

if (!PrintDGV.SelectedColumns.Contains(GridCol.HeaderText)) continue;

// Detemining whether the columns are fitted to page or not.

if (FitToPageWidth)

tmpWidth = (int)(Math.Floor((double)((double)GridCol.Width / (double)TotalWidth * (double)TotalWidth * ((double)e.MarginBounds.Width / (double)TotalWidth))));

else

tmpWidth = GridCol.Width;

HeaderHeight = (int)(e.Graphics.MeasureString(GridCol.HeaderText,GridCol.InheritedStyle.Font, tmpWidth).Height) + 11;

// Save width & height of headres and ColumnType

ColumnLefts.Add(tmpLeft);

ColumnWidths.Add(tmpWidth);

ColumnTypes.Add(GridCol.GetType());

tmpLeft += tmpWidth;

}

}

// Printing Current Page, Row by Row

while (RowPos <= dgv.Rows.Count - 1)

{

DataGridViewRow GridRow = dgv.Rows[RowPos];

if (GridRow.IsNewRow || (!PrintAllRows && !GridRow.Selected))

{

RowPos++;

continue;

}

CellHeight = GridRow.Height;

if (tmpTop + CellHeight >= e.MarginBounds.Height + e.MarginBounds.Top)

{

DrawFooter(e, RowsPerPage);

NewPage = true;

PageNo++;

e.HasMorePages = true;

return;

}

else

{

if (NewPage)

{

// Draw Header

e.Graphics.DrawString(PrintTitle, new Font(dgv.Font, FontStyle.Bold),

Brushes.Black, e.MarginBounds.Left, e.MarginBounds.Top -

e.Graphics.MeasureString(PrintTitle, new Font(dgv.Font,

FontStyle.Bold), e.MarginBounds.Width).Height - 13);

String s = DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToShortTimeString();

e.Graphics.DrawString(s, new Font(dgv.Font, FontStyle.Bold),

Brushes.Black, e.MarginBounds.Left + (e.MarginBounds.Width -

e.Graphics.MeasureString(s, new Font(dgv.Font,

FontStyle.Bold), e.MarginBounds.Width).Width), e.MarginBounds.Top -

e.Graphics.MeasureString(PrintTitle, new Font(new Font(dgv.Font,

FontStyle.Bold), FontStyle.Bold), e.MarginBounds.Width).Height - 13);

// Draw Columns

tmpTop = e.MarginBounds.Top;

i = 0;

foreach (DataGridViewColumn GridCol in dgv.Columns)

{

if (!GridCol.Visible) continue;

if (!PrintDGV.SelectedColumns.Contains(GridCol.HeaderText))

continue;

e.Graphics.FillRectangle(new SolidBrush(Color.LightGray),

new Rectangle((int)ColumnLefts[i], tmpTop,

(int)ColumnWidths[i], HeaderHeight));

e.Graphics.DrawRectangle(Pens.Black,

new Rectangle((int)ColumnLefts[i], tmpTop,

(int)ColumnWidths[i], HeaderHeight));

e.Graphics.DrawString(GridCol.HeaderText, GridCol.InheritedStyle.Font,

new SolidBrush(GridCol.InheritedStyle.ForeColor),

new RectangleF((int)ColumnLefts[i], tmpTop,

(int)ColumnWidths[i], HeaderHeight), StrFormat);

i++;

}

NewPage = false;

tmpTop += HeaderHeight;

}

// Draw Columns Contents

i = 0;

foreach (DataGridViewCell Cel in GridRow.Cells)

{

if (!Cel.OwningColumn.Visible) continue;

if (!SelectedColumns.Contains(Cel.OwningColumn.HeaderText))

continue;

// For the TextBox Column

if (((Type)ColumnTypes[i]).Name == "DataGridViewTextBoxColumn" ||

((Type)ColumnTypes[i]).Name == "DataGridViewLinkColumn")

{

e.Graphics.DrawString(Cel.Value.ToString(), Cel.InheritedStyle.Font,

new SolidBrush(Cel.InheritedStyle.ForeColor),

new RectangleF((int)ColumnLefts[i], (float)tmpTop,

(int)ColumnWidths[i], (float)CellHeight), StrFormat);

}

// For the Button Column

else if (((Type)ColumnTypes[i]).Name == "DataGridViewButtonColumn")

{

CellButton.Text = Cel.Value.ToString();

CellButton.Size = new Size((int)ColumnWidths[i], CellHeight);

Bitmap bmp = new Bitmap(CellButton.Width, CellButton.Height);

CellButton.DrawToBitmap(bmp, new Rectangle(0, 0,

bmp.Width, bmp.Height));

e.Graphics.DrawImage(bmp, new Point((int)ColumnLefts[i], tmpTop));

}

// For the CheckBox Column

else if (((Type)ColumnTypes[i]).Name == "DataGridViewCheckBoxColumn")

{

CellCheckBox.Size = new Size(14, 14);

CellCheckBox.Checked = (bool)Cel.Value;

Bitmap bmp = new Bitmap((int)ColumnWidths[i], CellHeight);

Graphics tmpGraphics = Graphics.FromImage(bmp);

tmpGraphics.FillRectangle(Brushes.White, new Rectangle(0, 0,

bmp.Width, bmp.Height));

CellCheckBox.DrawToBitmap(bmp,

new Rectangle((int)((bmp.Width - CellCheckBox.Width) / 2),

(int)((bmp.Height - CellCheckBox.Height) / 2),

CellCheckBox.Width, CellCheckBox.Height));

e.Graphics.DrawImage(bmp, new Point((int)ColumnLefts[i], tmpTop));

}

// For the ComboBox Column

else if (((Type)ColumnTypes[i]).Name == "DataGridViewComboBoxColumn")

{

CellComboBox.Size = new Size((int)ColumnWidths[i], CellHeight);

Bitmap bmp = new Bitmap(CellComboBox.Width, CellComboBox.Height);

CellComboBox.DrawToBitmap(bmp, new Rectangle(0, 0,

bmp.Width, bmp.Height));

e.Graphics.DrawImage(bmp, new Point((int)ColumnLefts[i], tmpTop));

e.Graphics.DrawString(Cel.Value.ToString(), Cel.InheritedStyle.Font,

new SolidBrush(Cel.InheritedStyle.ForeColor),

new RectangleF((int)ColumnLefts[i] + 1, tmpTop, (int)ColumnWidths[i]

- 16, CellHeight), StrFormatComboBox);

}

// For the Image Column

else if (((Type)ColumnTypes[i]).Name == "DataGridViewImageColumn")

{

Rectangle CelSize = new Rectangle((int)ColumnLefts[i],

tmpTop, (int)ColumnWidths[i], CellHeight);

Size ImgSize = ((Image)(Cel.FormattedValue)).Size;

e.Graphics.DrawImage((Image)Cel.FormattedValue,

new Rectangle((int)ColumnLefts[i] + (int)((CelSize.Width - ImgSize.Width) / 2),

tmpTop + (int)((CelSize.Height - ImgSize.Height) / 2),

((Image)(Cel.FormattedValue)).Width, ((Image)(Cel.FormattedValue)).Height));

}

// Drawing Cells Borders

e.Graphics.DrawRectangle(Pens.Black, new Rectangle((int)ColumnLefts[i],

tmpTop, (int)ColumnWidths[i], CellHeight));

i++;

}

tmpTop += CellHeight;

}

RowPos++;

// For the first page it calculates Rows per Page

if (PageNo == 1) RowsPerPage++;

}

if (RowsPerPage == 0) return;

// Write Footer (Page Number)

DrawFooter(e, RowsPerPage);

e.HasMorePages = false;

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

/// <summary>

/// 打印描绘表格底部页数信息

/// </summary>

/// <param name="e"></param>

/// <param name="RowsPerPage"></param>

private static void DrawFooter(System.Drawing.Printing.PrintPageEventArgs e,int RowsPerPage)

{

double cnt = 0;

// Detemining rows number to print

if (PrintAllRows)

{

if (dgv.Rows[dgv.Rows.Count - 1].IsNewRow)

cnt = dgv.Rows.Count - 2; // When the DataGridView doesn't allow adding rows

else

cnt = dgv.Rows.Count - 1; // When the DataGridView allows adding rows

}

else

cnt = dgv.SelectedRows.Count;

// Writing the Page Number on the Bottom of Page

string PageNum = " 第 " + PageNo.ToString() + " 页,共 " + Math.Ceiling((double)(cnt / RowsPerPage)).ToString()+ " 页";

e.Graphics.DrawString(PageNum, dgv.Font, Brushes.Black,

e.MarginBounds.Left + (e.MarginBounds.Width -

e.Graphics.MeasureString(PageNum, dgv.Font,

e.MarginBounds.Width).Width) / 2, e.MarginBounds.Top +

e.MarginBounds.Height + 31);

}

}

//弹出打印窗口设置的窗体构造类

partial class PrintOptions

{

/// <summary>

/// 必需的设计器变量。

/// </summary>

private System.ComponentModel.IContainer components = null;

/// <summary>

/// 清理所有正在使用的资源。

/// </summary>

/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>

protected override void Dispose(bool disposing)

{

if (disposing && (components != null))

{

components.Dispose();

}

base.Dispose(disposing);

}

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

private void InitializeComponent()

{

this.rdoSelectedRows = new System.Windows.Forms.RadioButton();

this.rdoAllRows = new System.Windows.Forms.RadioButton();

this.chkFitToPageWidth = new System.Windows.Forms.CheckBox();

this.lblTitle = new System.Windows.Forms.Label();

this.txtTitle = new System.Windows.Forms.TextBox();

this.gboxRowsToPrint = new System.Windows.Forms.GroupBox();

this.lblColumnsToPrint = new System.Windows.Forms.Label();

this.btnOK = new System.Windows.Forms.Button();

this.btnCancel = new System.Windows.Forms.Button();

this.chklst = new System.Windows.Forms.CheckedListBox();

this.gboxRowsToPrint.SuspendLayout();

this.SuspendLayout();

//

// rdoSelectedRows

//

this.rdoSelectedRows.AutoSize = true;

this.rdoSelectedRows.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

this.rdoSelectedRows.Location = new System.Drawing.Point(91, 18);

this.rdoSelectedRows.Name = "rdoSelectedRows";

this.rdoSelectedRows.Size = new System.Drawing.Size(64, 17);

this.rdoSelectedRows.TabIndex = 1;

this.rdoSelectedRows.TabStop = true;

this.rdoSelectedRows.Text = "选择行";

this.rdoSelectedRows.UseVisualStyleBackColor = true;

//

// rdoAllRows

//

this.rdoAllRows.AutoSize = true;

this.rdoAllRows.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

this.rdoAllRows.Location = new System.Drawing.Point(9, 18);

this.rdoAllRows.Name = "rdoAllRows";

this.rdoAllRows.Size = new System.Drawing.Size(64, 17);

this.rdoAllRows.TabIndex = 0;

this.rdoAllRows.TabStop = true;

this.rdoAllRows.Text = "全部行";

this.rdoAllRows.UseVisualStyleBackColor = true;

//

// chkFitToPageWidth

//

this.chkFitToPageWidth.AutoSize = true;

this.chkFitToPageWidth.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;

this.chkFitToPageWidth.FlatStyle = System.Windows.Forms.FlatStyle.System;

this.chkFitToPageWidth.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

this.chkFitToPageWidth.Location = new System.Drawing.Point(187, 72);

this.chkFitToPageWidth.Name = "chkFitToPageWidth";

this.chkFitToPageWidth.Size = new System.Drawing.Size(84, 18);

this.chkFitToPageWidth.TabIndex = 21;

this.chkFitToPageWidth.Text = "适应页宽";

this.chkFitToPageWidth.UseVisualStyleBackColor = true;

//

// lblTitle

//

this.lblTitle.AutoSize = true;

this.lblTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

this.lblTitle.Location = new System.Drawing.Point(184, 99);

this.lblTitle.Name = "lblTitle";

this.lblTitle.Size = new System.Drawing.Size(59, 13);

this.lblTitle.TabIndex = 20;

this.lblTitle.Text = "标题设置";

//

// txtTitle

//

this.txtTitle.AcceptsReturn = true;

this.txtTitle.Location = new System.Drawing.Point(184, 114);

this.txtTitle.Multiline = true;

this.txtTitle.Name = "txtTitle";

this.txtTitle.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;

this.txtTitle.Size = new System.Drawing.Size(176, 108);

this.txtTitle.TabIndex = 19;

//

// gboxRowsToPrint

//

this.gboxRowsToPrint.Controls.Add(this.rdoSelectedRows);

this.gboxRowsToPrint.Controls.Add(this.rdoAllRows);

this.gboxRowsToPrint.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

this.gboxRowsToPrint.Location = new System.Drawing.Point(184, 20);

this.gboxRowsToPrint.Name = "gboxRowsToPrint";

this.gboxRowsToPrint.Size = new System.Drawing.Size(173, 39);

this.gboxRowsToPrint.TabIndex = 18;

this.gboxRowsToPrint.TabStop = false;

this.gboxRowsToPrint.Text = "打印行范围";

//

// lblColumnsToPrint

//

this.lblColumnsToPrint.AutoSize = true;

this.lblColumnsToPrint.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

this.lblColumnsToPrint.Location = new System.Drawing.Point(8, 8);

this.lblColumnsToPrint.Name = "lblColumnsToPrint";

this.lblColumnsToPrint.Size = new System.Drawing.Size(98, 13);

this.lblColumnsToPrint.TabIndex = 17;

this.lblColumnsToPrint.Text = "选择要打印的列";

//

// btnOK

//

this.btnOK.BackColor = System.Drawing.SystemColors.Control;

this.btnOK.Cursor = System.Windows.Forms.Cursors.Default;

this.btnOK.FlatStyle = System.Windows.Forms.FlatStyle.System;

this.btnOK.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(178)));

this.btnOK.ForeColor = System.Drawing.SystemColors.ControlText;

this.btnOK.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;

this.btnOK.Location = new System.Drawing.Point(184, 228);

this.btnOK.Name = "btnOK";

this.btnOK.RightToLeft = System.Windows.Forms.RightToLeft.No;

this.btnOK.Size = new System.Drawing.Size(56, 23);

this.btnOK.TabIndex = 14;

this.btnOK.Text = "打印";

this.btnOK.UseVisualStyleBackColor = false;

this.btnOK.Click += new System.EventHandler(this.btnOK_Click);

//

// btnCancel

//

this.btnCancel.BackColor = System.Drawing.SystemColors.Control;

this.btnCancel.Cursor = System.Windows.Forms.Cursors.Default;

this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;

this.btnCancel.FlatStyle = System.Windows.Forms.FlatStyle.System;

this.btnCancel.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(178)));

this.btnCancel.ForeColor = System.Drawing.SystemColors.ControlText;

this.btnCancel.Location = new System.Drawing.Point(300, 228);

this.btnCancel.Name = "btnCancel";

this.btnCancel.RightToLeft = System.Windows.Forms.RightToLeft.No;

this.btnCancel.Size = new System.Drawing.Size(56, 23);

this.btnCancel.TabIndex = 15;

this.btnCancel.Text = "取消";

this.btnCancel.UseVisualStyleBackColor = false;

this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);

//

// chklst

//

this.chklst.CheckOnClick = true;

this.chklst.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

this.chklst.FormattingEnabled = true;

this.chklst.Location = new System.Drawing.Point(8, 26);

this.chklst.Name = "chklst";

this.chklst.Size = new System.Drawing.Size(170, 214);

this.chklst.TabIndex = 13;

//

// PrintOptions

//

this.AcceptButton = this.btnOK;

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.ClientSize = new System.Drawing.Size(369, 259);

this.Controls.Add(this.chkFitToPageWidth);

this.Controls.Add(this.lblTitle);

this.Controls.Add(this.txtTitle);

this.Controls.Add(this.gboxRowsToPrint);

this.Controls.Add(this.lblColumnsToPrint);

this.Controls.Add(this.btnOK);

this.Controls.Add(this.btnCancel);

this.Controls.Add(this.chklst);

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;

this.Name = "PrintOptions";

this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;

this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;

this.Text = "打印设置";

this.Load += new System.EventHandler(this.PrintOptions_Load);

this.gboxRowsToPrint.ResumeLayout(false);

this.gboxRowsToPrint.PerformLayout();

this.ResumeLayout(false);

this.PerformLayout();

}

#endregion

internal System.Windows.Forms.RadioButton rdoSelectedRows;

internal System.Windows.Forms.RadioButton rdoAllRows;

internal System.Windows.Forms.CheckBox chkFitToPageWidth;

internal System.Windows.Forms.Label lblTitle;

internal System.Windows.Forms.TextBox txtTitle;

internal System.Windows.Forms.GroupBox gboxRowsToPrint;

internal System.Windows.Forms.Label lblColumnsToPrint;

protected System.Windows.Forms.Button btnOK;

protected System.Windows.Forms.Button btnCancel;

internal System.Windows.Forms.CheckedListBox chklst;

}

//打印设置窗口的后台执行代码

/// <summary>

/// 打印设置相关的弹出窗体类

/// Coin

/// </summary>

public partial class PrintOptions : Form

{

/// <summary>

/// 构造器

/// </summary>

public PrintOptions()

{

InitializeComponent();

}

//标题设置

public string PrintTitle

{

get { return txtTitle.Text; }

}

//是否打印全部行

public bool PrintAllRows

{

get { return rdoAllRows.Checked; }

}

//是否适应窗口宽度

public bool FitToPageWidth

{

get { return chkFitToPageWidth.Checked; }

}

/// <summary>

/// 构造函数

/// </summary>

/// <param name="availableFields">参数传递列的名称添加到控件里</param>

public PrintOptions(List<string> availableFields)

{

InitializeComponent();

foreach (string field in availableFields)

chklst.Items.Add(field,true);

}

/// <summary>

/// 窗体加载Load事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void PrintOptions_Load(object sender, EventArgs e)

{

rdoAllRows.Checked = true;

chkFitToPageWidth.Checked = true;

}

/// <summary>

/// 打印按钮事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnOK_Click(object sender, EventArgs e)

{

if (chklst.CheckedItems.Count==0)

{

MessageBox.Show("请选择要要打印的列!");

return;

}

this.DialogResult = DialogResult.OK;

this.Close();

}

/// <summary>

/// 取消按钮事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnCancel_Click(object sender, EventArgs e)

{

this.DialogResult = DialogResult.Cancel;

this.Close();

}

/// <summary>

/// 获取选择的列的集合方法

/// </summary>

/// <returns></returns>

public List<string> GetSelectedColumns()

{

List<string> lst = new List<string>();

foreach (object item in chklst.CheckedItems)

lst.Add(item.ToString());

return lst;

}

}

以下是效果图片。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐