资源预览内容
第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
第9页 / 共40页
第10页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1第第7章章 文本编辑器的实现文本编辑器的实现 本章的目的是建立一个文本编辑器,同时继续本章的目的是建立一个文本编辑器,同时继续介绍控件的用法。有两类文本编辑器:单文档和多介绍控件的用法。有两类文本编辑器:单文档和多文档文本编辑器。单文档文本编辑器一次只能打开文档文本编辑器。单文档文本编辑器一次只能打开一个文件,如果要打开另一个文件,必须关闭当前一个文件,如果要打开另一个文件,必须关闭当前打开的文件,微软的写字板程序就是单文档字处理打开的文件,微软的写字板程序就是单文档字处理程序。多文档文本编辑器允许同时打开多个文件,程序。多文档文本编辑器允许同时打开多个文件,每个文件占用一个子窗口,微软的每个文件占用一个子窗口,微软的Word程序就是程序就是多文档字处理程序。本章首先介绍建立单文档文本多文档字处理程序。本章首先介绍建立单文档文本编辑器的方法,然后介绍建立多文档文本编辑器的编辑器的方法,然后介绍建立多文档文本编辑器的方法。方法。 要从这个例子中学会如何设计一个完整的要从这个例子中学会如何设计一个完整的程序。程序。27.1 RichTextBox控件控件 使用使用RichTextBox 可以建立一个文本编辑器,它和可以建立一个文本编辑器,它和TextBox 的一些的一些属性、事件和方法相同,其新增属性、事件和方法如下:属性、事件和方法相同,其新增属性、事件和方法如下: u属性属性Dock: u属性属性SelectedText、SelectionLength、SelectionStart: u属性属性SelectionFont: u属性属性SelectionColor: u属性属性Lines: u属性属性Modified: u事件事件SelectionChange:u事件事件TextChanged:u方法方法Clear(): u方法方法Copy()、Cut()、Paste(): u方法方法SelectAll(): u方法方法Find(): u方法方法SaveFile()和和LoadFile(): u方法方法Undo(): u方法方法Redo(): 37.2 剪贴板功能剪贴板功能 放放RichTextBox控件到窗体。属性控件到窗体。属性Name=richTextBox1,Dock=Fill,Text=。 private void menuItemEditCut_Click(object sender,EventArgs e) richTextBox1.Cut();/剪切剪切private void menuItemEditCopy_Click(object sender,EventArgs e) richTextBox1.Copy();/拷贝拷贝private void menuItemEditPaste_Click(object sender,EventArgs e) richTextBox1.Paste();/粘贴粘贴private void menuItemEditUndo_Click(object sender,EventArgs e) richTextBox1.Undo();/撤销撤销private void menuItemEditRedo_Click(object sender,EventArgs e) richTextBox1.Redo();/恢复恢复47.3 存取文件存取文件 文本编辑器都应具有文件存取功能,菜单顶级菜单项文本编辑器都应具有文件存取功能,菜单顶级菜单项“文件的弹出菜单中一般包括如下菜单项:新建、打文件的弹出菜单中一般包括如下菜单项:新建、打开、关闭、保存和另存为等。本节实现以上菜单项。开、关闭、保存和另存为等。本节实现以上菜单项。 4.3.1 OpenFileDialog和和SaveFileDialog控件控件两个对话框的两个对话框的 的常用属性:的常用属性:属性属性Filter:例如:例如Filter=“纯文本文件纯文本文件(*.txt)|*.txt|所所有文件有文件(*.*)|*.* 属性属性FilterIndex: 属性属性FileName: 属性属性InitialDirectory: 属性属性DefaultExt: 方法方法ShowDialog(): 5677.3.2 存取文件功能实现存取文件功能实现 把把OpenFileDialogOpenFileDialog和和SaveFileDialogSaveFileDialog控件放到窗体中。为菜控件放到窗体中。为菜单增加顶级菜单项:文件,为其弹出菜单增加菜单项:新单增加顶级菜单项:文件,为其弹出菜单增加菜单项:新建、打开建、打开.、保存、保存.、另存为、另存为.、退出。修改这些菜单、退出。修改这些菜单项的项的NameName属性分别为:属性分别为:mainMenuFilemainMenuFile、menuItemFileNewmenuItemFileNew、menuItemFileOpenmenuItemFileOpen、menuItemFileSavemenuItemFileSave、menuItemFileSaveAsmenuItemFileSaveAs、menuItemFileExitmenuItemFileExit。 为为Form1Form1类中定义变量:类中定义变量:string s_FileName=“string s_FileName=“,记录当前,记录当前编辑的文件名编辑的文件名 private void menuItemFileNew_Click(object private void menuItemFileNew_Click(object sender,EventArgs e) /sender,EventArgs e) /新建文件菜单项新建文件菜单项 richTextBox1.Text=; /richTextBox1.Text=; /或或richTextBox1.Clear();richTextBox1.Clear();s_FileName=; /s_FileName=; /新建文件没有文件名。新建文件没有文件名。 8private void menuItemFileOpen_Click( /private void menuItemFileOpen_Click( /打开文件菜单项打开文件菜单项object sender,EventArgs e)object sender,EventArgs e) if(openFileDialog1.ShowDialog()=) if(openFileDialog1.ShowDialog()=) s_FileName=openFileDialog1.FileName; s_FileName=openFileDialog1.FileName;richTextBox1.LoadFile(openFileDialog1.FileName,richTextBox1.LoadFile(openFileDialog1.FileName,);); private void menuItemFileSaveAs_Click( /private void menuItemFileSaveAs_Click( /另存为菜单项另存为菜单项object sender,EventArgs e)object sender,EventArgs e) if(saveFileDialog1.ShowDialog()=) if(saveFileDialog1.ShowDialog()=) s_FileName=saveFileDialog1.FileName;s_FileName=saveFileDialog1.FileName;richTextBox1.SaveFile(saveFileDialog1.FileName,richTextBox1.SaveFile(saveFileDialog1.FileName,);); / /注意存取文件类型应一致。注意存取文件类型应一致。 9private void menuItemSaveFile_Click( /private void menuItemSaveFile_Click( /保存文件菜单项保存文件菜单项object sender,EventArgs e)object sender,EventArgs e) !=0)!=0)richTextBox1.SaveFile(s_FileName,richTextBox1.SaveFile(s_FileName,););elseelsemenuItemFileSaveAs_Click(sender,e);menuItemFileSaveAs_Click(sender,e); private void menuItemExit_Click(private void menuItemExit_Click( / /退出菜单项退出菜单项object sender,EventArgs e)object sender,EventArgs e) Close();Close(); 107.4 修改字体修改字体 为修改使用的字体,可打开字体对话框为修改使用的字体,可打开字体对话框FontDialogFontDialog,选择指定字体。可以按两种方式修改字体,如果未选择指定字体。可以按两种方式修改字体,如果未选中文本,表示以后键入的字符将按选定字体输入。选中文本,表示以后键入的字符将按选定字体输入。如果选中文本,那么仅修改选定文本的字体。修改如果选中文本,那么仅修改选定文本的字体。修改字符颜色也根据同样原那么。字符颜色也根据同样原那么。 7.4.1 FontDialog控件控件 可以用可以用FontDialogFontDialog对话框选定指定字体,对话框选定指定字体,FontDialogFontDialog控件和控件和OpenDialogOpenDialog控件的属性和方法控件的属性和方法基本相同,这里只介绍属性基本相同,这里只介绍属性FontFont,它代表用,它代表用FontDialogFontDialog对话框选定的字体。对话框选定的字体。 11127.4.2 修改字体实现方法修改字体实现方法 放放FontDialogFontDialog控件到窗体,属性控件到窗体,属性Name=fontDialog1Name=fontDialog1。为。为菜单增加顶级菜单项:格式,属性菜单增加顶级菜单项:格式,属性NameName为为mainMenuModelmainMenuModel,为其弹出菜单增加菜单项:字体,属,为其弹出菜单增加菜单项:字体,属性性NameName为为menuItemModelFontmenuItemModelFont,为菜单,为菜单“格式格式| |字体字体菜单项增加单击事件处理函数如下:菜单项增加单击事件处理函数如下: private void menuItemModelFont_Click(private void menuItemModelFont_Click(object sender,EventArgs e)object sender,EventArgs e) if(fontDialog1.ShowDialog()=)if(fontDialog1.ShowDialog()=) richTextBox1.SelectionFont=fontDialog1.Font; richTextBox1.SelectionFont=fontDialog1.Font; 137.5 About对话框对话框 单击菜单单击菜单 项目项目| |添加添加WindowsWindows窗体窗体 菜单项,弹出对话框菜单项,弹出对话框 14如上图添加一个窗体,修改如上图添加一个窗体,修改formAboutformAbout窗体属性窗体属性StartPosition=CenterParentStartPosition=CenterParent,修改属性修改属性MaximizeBox=FalseMaximizeBox=False,MinimizeBox=FalseMinimizeBox=False 属性属性FormBorderStyle=FixedDialogFormBorderStyle=FixedDialog 运行运行界面界面 如下:如下:15标题为标题为“确定按钮单击事件处理函数如下:确定按钮单击事件处理函数如下:private void button1_Click(object private void button1_Click(object sender,EventArgs e)sender,EventArgs e) Close();Close(); 为菜单增加顶级菜单项:帮助,为其弹出菜单增加标为菜单增加顶级菜单项:帮助,为其弹出菜单增加标题为题为“关于关于的菜单项,属性的菜单项,属性NameName为为menuItemAboutmenuItemAbout。菜单。菜单“帮助帮助| |关于关于菜单项单击菜单项单击事件处理函数如下:事件处理函数如下: private void menuItemAbout_Click(private void menuItemAbout_Click(object sender,EventArgs e)object sender,EventArgs e) formAbout AboutDialog=new formAbout();formAbout AboutDialog=new formAbout(); AboutDialog.ShowDialog(this);/ AboutDialog.ShowDialog(this);/打开模式对话框打开模式对话框 /注意不能使用注意不能使用Show()Show()函数,它打开非模式对话框函数,它打开非模式对话框 167.6 文本编辑器查找替换功能文本编辑器查找替换功能本节首先介绍模式对话框和非模式对话框的概念。并使本节首先介绍模式对话框和非模式对话框的概念。并使用非模式对话框在文本编辑器中实现查找和替换功能。用非模式对话框在文本编辑器中实现查找和替换功能。 7.6.1 7.6.1 模式对话框和非模式对话框模式对话框和非模式对话框 模式对话框和非模式对话框的区别是:模式对话框和非模式对话框的区别是: 两类对话框本质上都是窗体,两类对话框本质上都是窗体,是是FormForm类的派生类,只是打开时类的派生类,只是打开时使用的方法不一样,打开模式对话框,使用方法使用的方法不一样,打开模式对话框,使用方法ShowDialog()ShowDialog(),而打开非模式对话框,使用方法,而打开非模式对话框,使用方法Show()Show()。 177.6.2 查找替换功能的实现查找替换功能的实现 建立新窗体,窗体文件名称为,作为建立新窗体,窗体文件名称为,作为查找替换查找替换对话框。窗体类名对话框。窗体类名也为也为formFindReplace,为为formFindReplace类增加变量:类增加变量:Form1 MainForm1; 属性属性StartPosition=CenterParent,MaximizeBox=False,MinimizeBox=False, FormBorderStyle=FixedDialog, Text=“查找查找和替换和替换 ,对话框界面如图对话框界面如图: 187.6.2 查找替换功能的实现查找替换功能的实现 续续修改修改formFindReplaceformFindReplace类构造函数如下类构造函数如下, ,增加的参数增加的参数form1form1是主窗体是主窗体属性属性NameName的值。的值。public formFindReplace(Form1 form1)public formFindReplace(Form1 form1) InitializeComponent(); InitializeComponent(); MainForm1=form1;/ MainForm1=form1;/新增语句新增语句, ,记录主窗体属性记录主窗体属性NameName的值的值/有了有了Form1Form1引用,可以在引用,可以在formFindReplaceformFindReplace类中调用类中调用Form1Form1类的类的公有方法公有方法 查找替换对话框中标题为查找替换对话框中标题为“查找下一个按钮单击事件函数如下:查找下一个按钮单击事件函数如下:private void buttonFind_Click(object sender,EventArgs e)private void buttonFind_Click(object sender,EventArgs e) if(textBox1.Text.Length!=0)if(textBox1.Text.Length!=0)方法见后面定义方法见后面定义MainForm1.FindRichTextBoxString(textBox1.Text); MainForm1.FindRichTextBoxString(textBox1.Text); elseelse(“(“查找字符串不能为空查找字符串不能为空, , 提示提示,);,); /MessageBox/MessageBox是对话框,使用方法见节是对话框,使用方法见节 197.6.2 查找替换功能的实现查找替换功能的实现 续续查找替换对话框中标题为查找替换对话框中标题为“替换查到字符按钮单击事件函数如替换查到字符按钮单击事件函数如下:下:private void buttonReplace_Click(object sender,EventArgs private void buttonReplace_Click(object sender,EventArgs e)e) if(textBox2.Text.Length!=0) if(textBox2.Text.Length!=0) MainForm1.ReplaceRichTextBoxString(textBox2.Text); MainForm1.ReplaceRichTextBoxString(textBox2.Text); 后面定义后面定义 (“ (“替换字符串不能为空替换字符串不能为空, , 提示提示, );, ); 为为Form1Form1类增加变量:类增加变量:int FindPostion=0int FindPostion=0,该变量用来记录下一,该变量用来记录下一次查找的开始位置。为次查找的开始位置。为Form1Form1窗体菜单的窗体菜单的 编辑编辑 顶级菜单项的弹顶级菜单项的弹出菜单增加菜单项:查找和替换,属性出菜单增加菜单项:查找和替换,属性NameName为为menuItemFindReplacemenuItemFindReplace。 查找和替换查找和替换 菜单项单击事件处理函数菜单项单击事件处理函数如下:如下: 207.6.2 查找替换功能的实现查找替换功能的实现 续续private void menuItemFindReplace_Click(private void menuItemFindReplace_Click(object sender,EventArgs e)object sender,EventArgs e) FindPostion=0;FindPostion=0;/下句中的下句中的thisthis是是Form1Form1类对象引用类对象引用formFindReplace FindReplaceDialog=new formFindReplace FindReplaceDialog=new formFindReplace(this);formFindReplace(this);(); /(); /打开非模式对话框使用打开非模式对话框使用Show()Show()方法方法 定义定义FindRichTextBoxStringFindRichTextBoxString方法方法 public void FindRichTextBoxString(string FindString)public void FindRichTextBoxString(string FindString) if(FindPostion=richTextBox1.Text.Length) (“if(FindPostion=richTextBox1.Text.Length) (“已到文本已到文本底部底部, ,再次查找将从文本开始处查找再次查找将从文本开始处查找,提示提示,);,); FindPostion=0; FindPostion=0; /下次查找的开始位置下次查找的开始位置 return; return; 217.6.2 查找替换功能的实现查找替换功能的实现 续续FindPostion=richTextBox1.Find(FindString,FindPostion,FindPostion=richTextBox1.Find(FindString,FindPostion,););if(FindPostion=-1)/-1if(FindPostion=-1)/-1表示未找到匹配字符串,提示用户表示未找到匹配字符串,提示用户 (未找到匹配字符串未找到匹配字符串, ,再次查找将从文本开始处查找再次查找将从文本开始处查找,提示提示, , );); FindPostion=0; FindPostion=0; / /下次查找的开始位置下次查找的开始位置 else else/找到匹配字符串找到匹配字符串 richTextBox1.Focus(); / richTextBox1.Focus(); /主窗体成为注视窗口主窗体成为注视窗口 FindPostion+=; FindPostion+=; / /下次查找的开始位置在此次找到字符串之后下次查找的开始位置在此次找到字符串之后 227.6.2 查找替换功能的实现查找替换功能的实现 续续替换字符串的方法替换字符串的方法 :public void ReplaceRichTextBoxString(public void ReplaceRichTextBoxString(string ReplaceString)string ReplaceString) if(richTextBox1.SelectedText.Length!=0)if(richTextBox1.SelectedText.Length!=0)richTextBox1.SelectedText=ReplaceString;richTextBox1.SelectedText=ReplaceString; /替换被选定的字符串替换被选定的字符串 237.6.2 查找替换功能的实现查找替换功能的实现 续续查找和替换运行结果查找和替换运行结果 :247.7.1 7.7.1 对话框对话框MessageBox MessageBox.Show(this,MessageBox.Show(this,要保存当前更改吗?要保存当前更改吗?,保存更改吗?保存更改吗?,);); 257.7.2 7.7.2 提示保存已被修改的文件提示保存已被修改的文件 为为Form1Form1类增加一个类增加一个boolbool变量变量bSave=falsebSave=false作为标记,用作为标记,用来跟踪控件来跟踪控件RichTextBoxRichTextBox中的文本内容是否被修改。在中的文本内容是否被修改。在程序开始运行、建立和打开一个新文件后,程序开始运行、建立和打开一个新文件后,bSave=falsebSave=false,表示如果关闭当前文件,不必提示用户,表示如果关闭当前文件,不必提示用户保存当前文件。当保存当前文件。当RichTextBoxRichTextBox控件中的文本被修改,控件中的文本被修改,将激活将激活RichTextBoxRichTextBox控件控件TextChangedTextChanged事件,在该事件事件,在该事件处理函数中,使处理函数中,使bSave=truebSave=true,表示关闭当前文件前,表示关闭当前文件前,要询问用户是否保存当前已被修改的文件。要询问用户是否保存当前已被修改的文件。首先在主窗体首先在主窗体Form1Form1类中增加一个函数,其功能是如果检类中增加一个函数,其功能是如果检查到当前文件已被修改,用对话框询问用户是否保存查到当前文件已被修改,用对话框询问用户是否保存当前文件,根据用户的选择作相应的处理,该函数返当前文件,根据用户的选择作相应的处理,该函数返回回truetrue,表示继续操作,该函数返回,表示继续操作,该函数返回falsefalse,表示忽略,表示忽略此次操作。之所以要增加这个函数是因为有三处要用此次操作。之所以要增加这个函数是因为有三处要用到此函数。该函数定义如下:到此函数。该函数定义如下: 26public bool IfSaveOldFile()public bool IfSaveOldFile() bool ReturnValue=true; bool ReturnValue=true;if(bSave)if(bSave) dr; dr; dr=MessageBox.Show(this,“ dr=MessageBox.Show(this,“要保存当前更改吗?要保存当前更改吗?, , 保存更改吗?保存更改吗?, , , ););switch(dr)switch(dr)/根据用户选择做相应处理根据用户选择做相应处理 case : case :bSave=false;/bSave=false;/保存文件后,保存文件后,应使应使bSavebSave为为falsefalse!=0)!=0)richTextBox1.SaveFile(s_FileName,richTextBox1.SaveFile(s_FileName,); ); 27elseelse SaveFileDialog saveFileDialog1=SaveFileDialog saveFileDialog1=new SaveFileDialog();new SaveFileDialog();if(saveFileDialog1.ShowDialog()=if(saveFileDialog1.ShowDialog()=) ) s_FileName=saveFileDialog1.FileName; s_FileName=saveFileDialog1.FileName; richTextBox1.SaveFile(s_FileName, richTextBox1.SaveFile(s_FileName,);); /返回返回truetrue通知调用本方法的程序本次操作继续通知调用本方法的程序本次操作继续ReturnValue=true;ReturnValue=true; break;break;28/单击了单击了nono按钮,不保存按钮,不保存case :case :bSave=false;bSave=false;ReturnValue=true;ReturnValue=true;break;break;/单击了单击了CancelCancel按钮按钮case :case : ReturnValue=false; ReturnValue=false; break; break; / /返回返回falsefalse,通知调用本方法的程序,本次操作取消,通知调用本方法的程序,本次操作取消 return ReturnValue;return ReturnValue; 297.7.2 7.7.2 提示保存已被修改的文件提示保存已被修改的文件( (续续) )在菜单在菜单“文件文件| |新建和新建和“文件文件| |打开菜单项的事件函数的第打开菜单项的事件函数的第1 1条条语句前增加如下语句:语句前增加如下语句: if(!IfSaveOldFile()if(!IfSaveOldFile()/如果返回如果返回falsefalse本次操作取消本次操作取消 return; return;修改菜单修改菜单“文件文件| |保存保存.菜单项单击事件处理函数如下:菜单项单击事件处理函数如下:private void menuItemSaveFile_Click(private void menuItemSaveFile_Click(object sender,EventArgs e)object sender,EventArgs e) !=0)!=0) bSave=false; richTextBox1.SaveFile(s_FileName,bSave=false; richTextBox1.SaveFile(s_FileName,);); elseelsemenuItemSaveAs_Click(sender,e);menuItemSaveAs_Click(sender,e); 307.7.2 7.7.2 提示保存已被修改的文件提示保存已被修改的文件( (续续) )修改菜单修改菜单“文件文件| |另存为另存为.菜单项单击事件函数如下:菜单项单击事件函数如下:private void menuItemSaveAs_Click(private void menuItemSaveAs_Click(object sender,EventArgs e)object sender,EventArgs e) SaveFileDialog saveFileDialog1=new SaveFileDialog();SaveFileDialog saveFileDialog1=new SaveFileDialog();saveFileDialog1.Filter=saveFileDialog1.Filter=纯文本文件纯文本文件(*.txt)|*.txt|(*.txt)|*.txt|所有文件所有文件(*.*)|*.*;(*.*)|*.*;saveFileDialog1.FilterIndex=1;saveFileDialog1.FilterIndex=1;if(saveFileDialog1.ShowDialog()=)if(saveFileDialog1.ShowDialog()=) s_FileName=saveFileDialog1.FileName;s_FileName=saveFileDialog1.FileName;richTextBox1.SaveFile(s_FileName,richTextBox1.SaveFile(s_FileName,););bSave=false;bSave=false; 317.7.2 7.7.2 提示保存已被修改的文件提示保存已被修改的文件( (续续) )为为RichTextBoxRichTextBox控件控件TextChangedTextChanged事件增加事件函数如下:事件增加事件函数如下:private void richTextBox1_TextChanged(private void richTextBox1_TextChanged(object sender,EventArgs e)object sender,EventArgs e) bSave=true;bSave=true; 窗体窗体Form1Form1的的FormClosingFormClosing事件是在关事件是在关闭窗口之前窗口之前产生的生的事件,此事件,此时,窗体中的控件,窗体中的控件还存在,存在,还可以保存修改可以保存修改的内容,也可以不退出。增加的内容,也可以不退出。增加ClosingClosing事件的事件事件的事件处理理函数如下:函数如下: private void Form1_FormClosing(object sender,private void Form1_FormClosing(object sender, FormClosingEventArgs e) FormClosingEventArgs e) if(!IfSaveOldFile()if(!IfSaveOldFile() e.Cancel=true; e.Cancel=true;/不退出,程序不退出,程序继续运行运行 327.8 打印和打印预览 自学自学337.9 编写多文档界面应用程序编写多文档界面应用程序 7.9.1 多文档文本编辑器多文档文本编辑器 建立一个类似建立一个类似Microsoft Word的编辑器,有多页,每的编辑器,有多页,每页处理一个文档。多文档界面页处理一个文档。多文档界面(MDI)应用程序有一应用程序有一个父窗体个父窗体(主窗体主窗体),父窗体在其工作区内包含一组,父窗体在其工作区内包含一组子窗体。每个子窗体都是一个限制为只能在父窗体子窗体。每个子窗体都是一个限制为只能在父窗体内出现的窗体。这些子窗体通常共享父窗体的菜单内出现的窗体。这些子窗体通常共享父窗体的菜单栏、工具栏以及其他部分。栏、工具栏以及其他部分。 运行效果如以下图,主窗体中的子窗体为层叠排列。运行效果如以下图,主窗体中的子窗体为层叠排列。 347.9.1 多文档文本编辑器多文档文本编辑器(续续)357.9.1 多文档文本编辑器多文档文本编辑器(续续) 新建一个新项目。修改新建一个新项目。修改Form1Form1窗体属性窗体属性IsMdiContainer=trueIsMdiContainer=true,表示主窗体是一个子窗体容器。放菜,表示主窗体是一个子窗体容器。放菜单控件单控件MenuStripMenuStrip到主窗体。为菜单增加到主窗体。为菜单增加 文件文件 顶级菜单项。顶级菜单项。为为 文件文件 顶级菜单项的弹出菜单增加菜单项:新建、打开、另顶级菜单项的弹出菜单增加菜单项:新建、打开、另存为、关闭当前窗口、退出。为菜单增加存为、关闭当前窗口、退出。为菜单增加 窗口窗口 顶级菜单项。顶级菜单项。在在 窗口窗口 顶级菜单项的弹出菜单中增加菜单项:水平平铺、层顶级菜单项的弹出菜单中增加菜单项:水平平铺、层叠、垂直平铺。设置菜单控件叠、垂直平铺。设置菜单控件MenuStripMenuStrip的的MdiWindowListItemMdiWindowListItem属性为属性为“窗口顶级菜单项的窗口顶级菜单项的NameName属性值,使属性值,使“窗口顶级菜窗口顶级菜单项的弹出菜单下部增加子窗口列表。在单项的弹出菜单下部增加子窗口列表。在VS2005VS2005集成环境中,集成环境中,单击菜单单击菜单“项目项目| |添加添加WindowsWindows窗体菜单项,创建子窗体。窗窗体菜单项,创建子窗体。窗体文件名称为,窗体的类名也定义为体文件名称为,窗体的类名也定义为FormChildFormChild。放。放RichTextBox1RichTextBox1控件到子窗体。修改属性控件到子窗体。修改属性Dock=FillDock=Fill,Modifiers Modifiers =public=public,使,使RichTextBox1RichTextBox1为公有成员,在主窗体可以访问为公有成员,在主窗体可以访问RichTextBox1RichTextBox1。放。放OpenFileDialogOpenFileDialog和和SaveFileDialogSaveFileDialog控件到主控件到主窗体窗体 。菜单各菜单项事件处理函数如下:。菜单各菜单项事件处理函数如下: 367.9.1 多文档文本编辑器多文档文本编辑器(续续)private void private void 新建新建ToolStripMenuItem_Click(ToolStripMenuItem_Click(object sender, EventArgs e)object sender, EventArgs e) FormChild formChild=new FormChild();FormChild formChild=new FormChild();=this;=this;();(); private void private void 打开打开ToolStripMenuItem_Click(ToolStripMenuItem_Click(object sender, EventArgs e)object sender, EventArgs e) if(openFileDialog1.ShowDialog(this)=)if(openFileDialog1.ShowDialog(this)=) FormChild ChildForm=new FormChild();FormChild ChildForm=new FormChild();=this;=this;ChildForm.richTextBox1.LoadFile(openFileDialog1.FileChildForm.richTextBox1.LoadFile(openFileDialog1.File););();(); 377.9.1 多文档文本编辑器多文档文本编辑器(续续)private void private void 另存为另存为ToolStripMenuItem_Click(ToolStripMenuItem_Click(object sender, EventArgs e)object sender, EventArgs e) if(saveFileDialog1.ShowDialog(this)=)if(saveFileDialog1.ShowDialog(this)=) FormChild FormChild ChildForm=(;ChildForm=(;ChildForm.richTextBox1.SaveFile(saveFileDialog1.ChildForm.richTextBox1.SaveFile(saveFileDialog1.); ); private void private void 关闭当前窗口关闭当前窗口ToolStripMenuItem_Click(ToolStripMenuItem_Click(object sender,EventArgs e)object sender,EventArgs e) ();(); private void private void 退出退出ToolStripMenuItem_Click(ToolStripMenuItem_Click(object sender, EventArgs e)object sender, EventArgs e) Close();Close(); /退出运行程序退出运行程序387.9.1 多文档文本编辑器多文档文本编辑器(续续)private void private void 水平平铺水平平铺ToolStripMenuItem_Click(ToolStripMenuItem_Click(object sender, EventArgs e)object sender, EventArgs e) );); private void private void 层叠层叠ToolStripMenuItem_Click(ToolStripMenuItem_Click(object sender, EventArgs e)object sender, EventArgs e) );); private private void void 垂垂 直直 平平 铺铺 ToolStripMenuItem_Click(object ToolStripMenuItem_Click(object sender, EventArgs e)sender, EventArgs e) this.LayoutMdi(MdiLayout. TileVertical);this.LayoutMdi(MdiLayout. TileVertical); 397.9.2 7.9.2 多项选择项卡页的文本编辑器多项选择项卡页的文本编辑器 自学。自学。大作业:制作多文档文本编辑器大作业:制作多文档文本编辑器FormChild ChildForm=(;FormChild ChildForm=(;7979页:页:private void menuItemEditCut_Click(object sender,EventArgs e) richTextBox1.Cut();/剪切剪切修改为:修改为:private void menuItemEditCut_Click(object sender,EventArgs e) FormChild ChildForm=(;FormChild ChildForm=(; ChildFormChildForm.richTextBox1.Cut();/剪切剪切4081页:页:为为Form1类中定义变量:类中定义变量:string s_FileName=“,记录当前编辑的文件名,记录当前编辑的文件名必须使用每一个子窗体的必须使用每一个子窗体的richTextBox1的属性的属性Text记录文件名记录文件名82页页为菜单为菜单“文件文件|保存保存.菜单项增加单击事件处理函数如下:菜单项增加单击事件处理函数如下:private void menuItemSaveFile_Click(object sender,EventArgs e) FormChild ChildForm=(;if(ChildForm!=0) ChildForm. (ChildForm);elsemenuItemFileSaveAs_Click(sender,e); 83页、页、86页第页第30、31步,步,88页,使用页,使用ChildForm.richTextBox1.Modified
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号