您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > c__两个WIN程序窗口间传递参数的方法【转】
案例:设计一个编辑处理程序,可以编辑和打印、打印预览文档。操作方式:1.新建一个项目,其中有两个form(Form1,Form2)2.在Form1中添加菜单mainMenu1,一个richTextBox1(定义为Public),一个打印文档控件PrintDocument,名称为MyPrintDC。一个状态栏名称为myStatus。菜单项有:文件(mnFile){新建(mnNew),打开(mnOpen),保存(mnSave),页面设置(mnPageSetup),打印预览(mnPrintView),打印(mnPint),退出(mnClose)}编辑(mnEdit){复制(mnCopy),剪切(mnCut),粘贴(mnPaste),查找(mnSearch)}关于(mnAbout)3.在Form2中添加一个标签:查找内容,文本(txtSearch),命令按钮(btnSearch)查找一下个,命令按钮(btnCancel)取消4.Form1中代码:加入引用:usingSystem.IO;在控件定义阶段中加入:privateStringReadermyReader;privateForm2f;Form1窗体的构造函数中:f=newForm2();f.Owner=this;f.Hide();Form1窗体中定义一个方法CheckSave()privatevoidCheckSave(){if(this.richTextBox1.Text!=){if(MessageBox.Show(是否保存当前文件?,确认,MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK){this.myStatus.Text=保存文件;SaveFileDialogsvfDialog=newSaveFileDialog();svfDialog.Filter=文本文件|*.*|富文本格式文件|*.rtf|所有文件|*.*;if(svfDialog.ShowDialog()==DialogResult.OK){this.richTextBox1.SaveFile(svfDialog.FileName,RichTextBoxStreamType.PlainText);}}}}新建菜单(mnNew):this.CheckSave();this.richTextBox1.Clear();this.myStatus.Text=新建文件;打开菜单(mnOpen):this.CheckSave();OpenFileDialogopfDialog=newOpenFileDialog();opfDialog.Filter=文本文件|*.*|富文本格式文件|*.rtf|所有文件|*.*;if(opfDialog.ShowDialog()==DialogResult.OK){this.richTextBox1.LoadFile(opfDialog.FileName,RichTextBoxStreamType.PlainText);}this.myStatus.Text=打开文件;保存菜单(mnSave):this.myStatus.Text=保存文件;SaveFileDialogsvfDialog=newSaveFileDialog();svfDialog.Filter=文本文件|*.*|富文本格式文件|*.rtf|所有文件|*.*;if(svfDialog.ShowDialog()==DialogResult.OK){this.richTextBox1.SaveFile(svfDialog.FileName,RichTextBoxStreamType.PlainText);}打印文档控件的PrintPage事件代码(MyPrintDC):privatevoidMyPrintDC_PrintPage(objectsender,System.Drawing.Printing.PrintPageEventArgse){//打印文档打印页面事件代码this.myReader=newStringReader(this.richTextBox1.Text);//定义字符读流GraphicsmyGraphics=e.Graphics;FontmyPrintFont=this.richTextBox1.Font;//计算一页行数floatiLinePage=e.MarginBounds.Height/myPrintFont.GetHeight(myGraphics);intiLineNumber=0;//打印行数floatfyPosition=0;//打印时的纵坐标floatfMarginLeft=e.MarginBounds.Left;//纸页面左边界floatfMarginTop=e.MarginBounds.Top;stringstrLine=;while((iLineNumberiLinePage)&&(strLine=myReader.ReadLine())!=null){fyPosition=fMarginTop+iLineNumber*myPrintFont.GetHeight(myGraphics);myGraphics.DrawString(strLine,myPrintFont,newSolidBrush(Color.Black),fMarginLeft,fyPosition,newStringFormat());iLineNumber++;}if(strLine!=null){e.HasMorePages=true;}else{e.HasMorePages=false;}}页面设置菜单(mnPageSetup):PageSetupDialogmypgDialog=newPageSetupDialog();mypgDialog.Document=this.MyPrintDC;try{mypgDialog.ShowDialog();}catch{this.MyPrintDC.PrintController.OnEndPrint(this.MyPrintDC,newSystem.Drawing.Printing.PrintEventArgs());}打印预览菜单(mnPrintView):PrintPreviewDialogmyptViewDialog=newPrintPreviewDialog();myptViewDialog.Document=this.MyPrintDC;try{myptViewDialog.ShowDialog();}catch{this.MyPrintDC.PrintController.OnEndPrint(this.MyPrintDC,newSystem.Drawing.Printing.PrintEventArgs());}打印菜单(mnPrint):PrintDialogptDialog=newPrintDialog();ptDialog.Document=this.MyPrintDC;if(ptDialog.ShowDialog()==DialogResult.OK){try{this.MyPrintDC.Print();}catch{this.MyPrintDC.PrintController.OnEndPrint(this.MyPrintDC,newSystem.Drawing.Printing.PrintEventArgs());}}复制菜单(mnCopy):if(this.richTextBox1.SelectedText!=){Clipboard.SetDataObject(this.richTextBox1.SelectedText);this.mnCopy.Enabled=false;this.mnCut.Enabled=false;this.mnPaste.Enabled=true;}剪切菜单(mnCut):if(this.richTextBox1.SelectedText!=){Clipboard.SetDataObject(this.richTextBox1.SelectedText);this.richTextBox1.SelectedText=;this.mnCopy.Enabled=false;this.mnCut.Enabled=false;this.mnPaste.Enabled=true;}粘贴菜单(mnPaste):IDataObjectd=Clipboard.GetDataObject();this.richTextBox1.SelectedText=(string)d.GetData(DataFormats.Text);查找菜单(mnSearch):f.Show();富文本框richTextBox1的文件选择改变事件(SelectionChanged)if(this.richTextBox1.SelectedText!=){this.mnCut.Enabled=true;this.mnCopy.Enabled=true;}else{this.mnCut.Enabled=false;this.mnCopy.Enabled=false;this.mnPaste.Enabled=true;}4.Form2中的代码:定义一个整型变量:privateintfindPlace=0;命令按钮查找下一个代码if(this.txtSearch.Text!=){Form1mainform=(Form1)this.Owner;if(mainform.richTextBox1.Text.Length0){if((this.findPlace=mainform.richTextBox1.Text.IndexOf(this.txtSearch.Text,this.findPlace))==-1){MessageBox.Show(没有找到!);this.findPlace=0;}else{mainform.richTextBox1.Select(this.findPlace,this.txtSearch.Text.Length);this.findPlace=this.findPlace+this.txtSearch.Text.Length;mainform.Activate();}}}命令按钮取消代码:this.Hide();this.Owner.Show();方法一:C#中没有了像VB.Net中的全局变量,那么我们如何实现在不同的页面间传递参数呢?下面举例说明如何实现这一功能.1.新建一个项目.2.在该工程中添加一个窗体Form1.3.在该窗体中定义静态型字符串变量myTestStr1:publicstaticstringmyTestStr1=;4.在该窗体的构造函数中对该变量进行赋值,并为该窗体类添加属性GetStrValue.publicForm_Form1(){InitializeComponent();myTestStr1=Hello!;}publicstringGetStrValue{get{returnmyTestStr1;}set{myTestStr1=value;}}5.在该工程中另添加一个窗体Form2.6.在Form1窗体上添加一个button按钮(name:but_Test);7.在Form1窗体的but_Test_Click事件中添加以下代码:privatevoidbut_Test_Click(objectsender,System.EventArgse){Form2frm1=newForm2();frm1.ShowDialog(this);frm1.Close();}8.在Form2窗体上添加一个button按钮(name:but_Yes);9.在Form1窗体的but_Yes_Click事件中添加以下代码:priv
本文标题:c__两个WIN程序窗口间传递参数的方法【转】
链接地址:https://www.777doc.com/doc-3355453 .html