www.pudn.com > PrinterPageSetting.rar > Form1.cs


using System; 
using System.Drawing; 
using System.Collections; 
using System.ComponentModel; 
using System.Windows.Forms; 
using System.Data; 
 
namespace GoldPrinter 
{ 
	///  
	/// 实现显示页面设置\打印机设置\打印预览对话框及分页的步骤 
	/// 作 者:周方勇 
	/// Email:flygoldfish@sina.com 
	///  
	/// //MIS金质打印王,各种报表、网格如DataGrid打印、DataTable、HtmlTable等二维形式全搞定,源码免费下载  
	/// 讨论:http://community.csdn.net/Expert/topic/3278/3278050.xml?temp=.5012934 
	/// 下载:http://www.alinksoft.com 
	///  
	public class Form1 : System.Windows.Forms.Form 
	{ 
	    #region Windows 窗体设计器生成的代码 
		private System.Windows.Forms.MainMenu mainMenu1; 
		private System.Windows.Forms.MenuItem menuFile; 
		private System.Windows.Forms.MenuItem menuFilePageSetup; 
		private System.Windows.Forms.MenuItem menuFilePrintPreview; 
		private System.Windows.Forms.MenuItem menuFilePrint; 
		internal System.Windows.Forms.TextBox TextBox1; 
		///  
		/// 必需的设计器变量。 
		///  
		private System.ComponentModel.Container components = null; 
 
		public Form1() 
		{ 
			// 
			// Windows 窗体设计器支持所必需的 
			// 
			InitializeComponent(); 
 
			// 
			// TODO: 在 InitializeComponent 调用后添加任何构造函数代码 
			// 
		} 
 
		///  
		/// 清理所有正在使用的资源。 
		///  
		protected override void Dispose( bool disposing ) 
		{ 
			if( disposing ) 
			{ 
				if (components != null)  
				{ 
					components.Dispose(); 
				} 
			} 
			base.Dispose( disposing ); 
		} 
 
		#region Windows 窗体设计器生成的代码 
		///  
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改 
		/// 此方法的内容。 
		///  
		private void InitializeComponent() 
		{ 
            this.mainMenu1 = new System.Windows.Forms.MainMenu(); 
            this.menuFile = new System.Windows.Forms.MenuItem(); 
            this.menuFilePageSetup = new System.Windows.Forms.MenuItem(); 
            this.menuFilePrintPreview = new System.Windows.Forms.MenuItem(); 
            this.menuFilePrint = new System.Windows.Forms.MenuItem(); 
            this.TextBox1 = new System.Windows.Forms.TextBox(); 
            this.SuspendLayout(); 
            //  
            // mainMenu1 
            //  
            this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { 
                                                                                      this.menuFile}); 
            //  
            // menuFile 
            //  
            this.menuFile.Index = 0; 
            this.menuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { 
                                                                                     this.menuFilePageSetup, 
                                                                                     this.menuFilePrintPreview, 
                                                                                     this.menuFilePrint}); 
            this.menuFile.Text = "&File"; 
            //  
            // menuFilePageSetup 
            //  
            this.menuFilePageSetup.Index = 0; 
            this.menuFilePageSetup.Text = "Page Set&up"; 
            this.menuFilePageSetup.Click += new System.EventHandler(this.menuFilePageSetup_Click); 
            //  
            // menuFilePrintPreview 
            //  
            this.menuFilePrintPreview.Index = 1; 
            this.menuFilePrintPreview.Text = "Print Pre&view"; 
            this.menuFilePrintPreview.Click += new System.EventHandler(this.menuFilePrintPreview_Click); 
            //  
            // menuFilePrint 
            //  
            this.menuFilePrint.Index = 2; 
            this.menuFilePrint.Text = "&Print"; 
            this.menuFilePrint.Click += new System.EventHandler(this.menuFilePrint_Click); 
            //  
            // TextBox1 
            //  
            this.TextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)  
                | System.Windows.Forms.AnchorStyles.Left)  
                | System.Windows.Forms.AnchorStyles.Right))); 
            this.TextBox1.Location = new System.Drawing.Point(8, 8); 
            this.TextBox1.Multiline = true; 
            this.TextBox1.Name = "TextBox1"; 
            this.TextBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both; 
            this.TextBox1.Size = new System.Drawing.Size(872, 544); 
            this.TextBox1.TabIndex = 1; 
            this.TextBox1.Text = @"//*****实现显示页面设置\打印设置\打印预览对话框及分页的步骤***** 
 
//第一步:申明并实例化,当然实例化对象可以放在构造函数中 
private GoldPrinter.PrinterPageSetting printerPageSetting = new GoldPrinter.PrinterPageSetting(); 
 
//第二步:写下面一个过程即实现打印的具体过程,实现PrintPage委托 
private void PrintDocument_PrintPage_Handler(object o,System.Drawing.Printing.PrintPageEventArgs e) 
{ 
    System.Drawing.Graphics g = e.Graphics; 
    if (Draw(g)) 
    { 
        e.HasMorePages = true;  //要分页打印 
    } 
    else 
    { 
        e.HasMorePages = false; //打印结束 
    } 
} 
 
//第三步:打印委托,当然也可以放在构造函数中 
private void Form1_Load(object sender, System.EventArgs e) 
{ 
    //this.printerPageSetting.PrintPage += new GoldPrinter.PrintPageDelegate(PrintDocument_PrintPage_Handler); 
    //如果你不知上一句是什么意思,就用这一句吧, 
    //意思就是告诉printerPageSetting打印的具体实现过程是PrintDocument_PrintPage_Handler 
    this.printerPageSetting.PrintPageValue = new GoldPrinter.PrintPageDelegate(PrintDocument_PrintPage_Handler); 
} 
 
//第四步:显示页面设置\打印机设置\打印预览对话框 
private void menuFilePageSetup_Click(object sender, System.EventArgs e) 
{ 
    this.printerPageSetting.ShowPageSetupDialog();      //显示页面设置对话框 
} 
 
private void menuFilePrintPreview_Click(object sender, System.EventArgs e) 
{ 
    this.printerPageSetting.ShowPrintPreviewDialog();   //显示打印预览对话框 
} 
 
private void menuFilePrint_Click(object sender, System.EventArgs e) 
{ 
    this.printerPageSetting.ShowPrintSetupDialog();     //显示打印预览对话框 
}"; 
            //  
            // Form1 
            //  
            this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); 
            this.ClientSize = new System.Drawing.Size(888, 529); 
            this.Controls.Add(this.TextBox1); 
            this.Menu = this.mainMenu1; 
            this.Name = "Form1"; 
            this.Text = "页面设置\\打印设置\\打印预览对话框(C#版)"; 
            this.Load += new System.EventHandler(this.Form1_Load); 
            this.ResumeLayout(false); 
 
        } 
		#endregion 
 
		///  
		/// 应用程序的主入口点。 
		///  
		[STAThread] 
		static void Main()  
		{ 
			Application.Run(new Form1()); 
		} 
		#endregion 
 
        //*****实现显示页面设置\打印机设置\打印预览对话框及分页的步骤***** 
 
    //第一步:申明并实例化,当然实例化对象可以放在构造函数中 
    private GoldPrinter.PrinterPageSetting printerPageSetting = new GoldPrinter.PrinterPageSetting(); 
 
        //第二步:写下面一个过程即实现打印的具体过程,实现PrintPage委托 
    private void PrintDocument_PrintPage_Handler(object o,System.Drawing.Printing.PrintPageEventArgs e) 
    { 
        System.Drawing.Graphics g = e.Graphics; 
        if (Draw(g)) 
        { 
            e.HasMorePages = true;  //要分页打印 
        } 
        else 
        { 
            e.HasMorePages = false; //打印结束 
        } 
    } 
 
        //第三步:打印委托,当然也可以放在构造函数中 
        private void Form1_Load(object sender, System.EventArgs e) 
        { 
            //this.printerPageSetting.PrintPage += new GoldPrinter.PrintPageDelegate(PrintDocument_PrintPage_Handler); 
            //如果你不知上一句是什么意思,就用这一句吧, 
            //意思就是告诉printerPageSetting打印的具体实现过程是PrintDocument_PrintPage_Handler 
            this.printerPageSetting.PrintPageValue = new GoldPrinter.PrintPageDelegate(PrintDocument_PrintPage_Handler); 
        } 
 
        //第四步:显示页面设置\打印机设置\打印预览对话框 
        private void menuFilePageSetup_Click(object sender, System.EventArgs e) 
        { 
            this.printerPageSetting.ShowPageSetupDialog();      //显示页面设置对话框 
        } 
 
        private void menuFilePrintPreview_Click(object sender, System.EventArgs e) 
        { 
            this.printerPageSetting.ShowPrintPreviewDialog();   //显示打印预览对话框 
        } 
 
        private void menuFilePrint_Click(object sender, System.EventArgs e) 
        { 
            this.printerPageSetting.ShowPrintSetupDialog();     //显示打印预览对话框 
        } 
		//其它... 
		private static int intCurrentCharIndex; 
		private bool Draw(System.Drawing.Graphics g) 
		{ 
			float width,height; 
			width = this.printerPageSetting.PrintDocument.DefaultPageSettings.PaperSize.Width - this.printerPageSetting.PrintDocument.DefaultPageSettings.Margins.Left - this.printerPageSetting.PrintDocument.DefaultPageSettings.Margins.Right; 
			height = this.printerPageSetting.PrintDocument.DefaultPageSettings.PaperSize.Height -this.printerPageSetting.PrintDocument.DefaultPageSettings.Margins.Top - this.printerPageSetting.PrintDocument.DefaultPageSettings.Margins.Bottom; 
			//横向打印,宽与高交换 
			if (this.printerPageSetting.PrintDocument.DefaultPageSettings.Landscape) 
			{ 
				Swap(ref width,ref height); 
			} 
 
			RectangleF recPrintArea = new RectangleF(this.printerPageSetting.PrintDocument.DefaultPageSettings.Margins.Left,this.printerPageSetting.PrintDocument.DefaultPageSettings.Margins.Top,width,height); 
				 
				 
 
			DrawText drawText = new DrawText(this.TextBox1.Text); 
			drawText.Graphics = g; 
			drawText.RectangleF = recPrintArea; 
			drawText.StartChar = intCurrentCharIndex; 
			drawText.Draw(); 
 
			intCurrentCharIndex += drawText.CharsFitted; 
 
			if (intCurrentCharIndex < this.TextBox1.Text.Length) 
			{ 
				return true; 
			} 
			else 
			{ 
				intCurrentCharIndex = 0; 
				return false; 
			} 
		} 
 
		//两个数的值互换 
		private void Swap(ref float i,ref float j) 
		{ 
			float tmp = i; 
			i = j; 
			j = tmp; 
		} 
 
	}//End Class 
}//End Namespace