已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第7章 文本编辑器的实现 章本章的目的是建立一个文本编辑器, 本章的目的是建立一个文本编辑器,同时继续 介绍控件的用法。有两类文本编辑器: 介绍控件的用法。有两类文本编辑器:单文档和多 文档文本编辑器。 文档文本编辑器。单文档文本编辑器一次只能打开 一个文件,如果要打开另一个文件, 一个文件,如果要打开另一个文件,必须关闭当前 打开的文件, 打开的文件,微软的写字板程序就是单文档字处理 程序。多文档文本编辑器允许同时打开多个文件, 程序。多文档文本编辑器允许同时打开多个文件, 每个文件占用一个子窗口,微软的Word程序就是 每个文件占用一个子窗口,微软的 程序就是 多文档字处理程序。 多文档字处理程序。本章首先介绍建立单文档文本 编辑器的方法, 编辑器的方法,然后介绍建立多文档文本编辑器的 方法。 方法。 要从这个例子中学会如何设计一个完整的 程序。 程序。27.1 RichTextBox控件 控件使用RichTextBox 可以建立一个文本编辑器,它和 可以建立一个文本编辑器,它和TextBox 的一些 使用 属性、事件和方法相同,其新增属性、事件和方法如下: 属性、事件和方法相同,其新增属性、事件和方法如下: 属性Dock: : 属性 属性SelectedText、 属性 、 SelectionLength、 、 SelectionStart: : 属性SelectionFont: : 属性 方法Find(): : 方法 属性SelectionColor: 属性 : 方法SaveFile()和LoadFile(): 和 方法 : 属性Lines: : 属性 方法Undo(): : 方法 属性Modified: : 属性 方法Redo(): : 方法 事件SelectionChange: : 事件 事件TextChanged: : 事件 方法Clear(): : 方法 方法Copy()、Cut()、Paste(): 、 方法 、 : 方法SelectAll(): : 方法7.2 剪贴板功能3控件到窗体。 放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(); /恢复 恢复7.3 存取文件4文本编辑器都应具有文件存取功能, 文本编辑器都应具有文件存取功能,菜单顶级菜单项 文件”的弹出菜单中一般包括如下菜单项:新建、 “文件”的弹出菜单中一般包括如下菜单项:新建、 打开、关闭、保存和另存为等。本节实现以上菜单项。 打开、关闭、保存和另存为等。本节实现以上菜单项。 4.3.1 OpenFileDialog和SaveFileDialog控件 和 控件 的常用属性: 两个对话框的 的常用属性: 属性Filter 例如Filter= Filter: Filter=“纯文本文件 属性Filter:例如Filter=“纯文本文件 (*.txt)|*.txt|所有文件(*.*)|*.*” 所有文件(*.*)|*.* (*.txt)|*.txt|所有文件(*.*)|*.*” 属性FilterIndex FilterIndex: 属性FilterIndex: 属性FileName FileName: 属性FileName: 属性InitialDirectory InitialDirectory: 属性InitialDirectory: 属性DefaultExt DefaultExt: 属性DefaultExt: 方法ShowDialog() ShowDialog(): 方法ShowDialog():567.3.2 存取文件功能实现把OpenFileDialog和SaveFileDialog控件放到窗体中。为菜 OpenFileDialog和SaveFileDialog控件放到窗体中。 控件放到窗体中 单增加顶级菜单项:文件,为其弹出菜单增加菜单项: 单增加顶级菜单项:文件,为其弹出菜单增加菜单项:新 打开. 保存. 另存为. 退出。 .、 .、 .、 建、打开.、保存.、另存为.、退出。修改这些菜单 项的Name属性分别为:mainMenuFile、menuItemFileNew、 Name属性分别为 项的Name属性分别为:mainMenuFile、menuItemFileNew、 menuItemFileOpen、menuItemFileSave、 menuItemFileOpen、menuItemFileSave、 menuItemFileSaveAs、menuItemFileExit。 menuItemFileSaveAs、menuItemFileExit。 Form1类中定义变量 类中定义变量: s_FileName=“”, 为Form1类中定义变量:string s_FileName= ,记录当前编 辑的文件名 private void menuItemFileNew_Click(object /新建文件菜单项 sender,EventArgs e) /新建文件菜单项 /或 richTextBox1.Text=; /或richTextBox1.Clear(); /新建文件没有文件名 新建文件没有文件名。 s_FileName=; /新建文件没有文件名。 7/打开文件菜单项 private void menuItemFileOpen_Click( /打开文件菜单项 8 object sender,EventArgs e) if(openFileDialog1.ShowDialog()=DialogResult.OK) s_FileName=openFileDialog1.FileName; richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText); /另存为菜单项 private void menuItemFileSaveAs_Click( /另存为菜单项 object sender,EventArgs e) if(saveFileDialog1.ShowDialog()=DialogResult.OK) s_FileName=saveFileDialog1.FileName; richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText); /注意存取文件类型应一致 注意存取文件类型应一致。 /注意存取文件类型应一致。 private void menuItemSaveFile_Click( /保存文件菜单项 9 /保存文件菜单项 object sender,EventArgs e) if(s_FileName.Length!=0) richTextBox1.SaveFile(s_FileName, RichTextBoxStreamType.PlainText); else menuItemFileSaveAs_Click(sender,e); /退出菜单项 private void menuItemExit_Click( /退出菜单项 object sender,EventArgs e) Close(); 7.4 修改字体10为修改使用的字体,可打开字体对话框FontDialog, 为修改使用的字体,可打开字体对话框FontDialog, FontDialog 选择指定字体。可以按两种方式修改字体, 选择指定字体。可以按两种方式修改字体,如果未 选中文本,表示以后键入的字符将按选定字体输入。 选中文本,表示以后键入的字符将按选定字体输入。 如果选中文本,则仅修改选定文本的字体。 如果选中文本,则仅修改选定文本的字体。修改字 符颜色也根据同样原则。 符颜色也根据同样原则。7.4.1 FontDialog控件 控件可以用FontDialog对话框选定指定字体, 可以用FontDialog对话框选定指定字体, FontDialog对话框选定指定字体 FontDialog控件和OpenDialog控件的属性和方法 控件和OpenDialog FontDialog控件和OpenDialog控件的属性和方法 基本相同,这里只介绍属性Font Font, 基本相同,这里只介绍属性Font,它代表用 FontDialog对话框选定的字体。 FontDialog对话框选定的字体。 对话框选定的字体117.4.2 修改字体实现方法12放FontDialog控件到窗体,属性Name=fontDialog1。为 FontDialog控件到窗体,属性Name=fontDialog1。 控件到窗体 Name=fontDialog1 菜单增加顶级菜单项:格式,属性Name Name为 菜单增加顶级菜单项:格式,属性Name为 mainMenuModel,为其弹出菜单增加菜单项:字体, mainMenuModel,为其弹出菜单增加菜单项:字体,属 Name为menuItemModelFont,为菜单“格式|字体” 性Name为menuItemModelFont,为菜单“格式|字体” 菜单项增加单击事件处理函数如下: 菜单项增加单击事件处理函数如下: private void menuItemModelFont_Click( object sender,EventArgs e) if(fontDialog1.ShowDialog()=DialogResult.OK) richTextBox1.SelectionFont=fontDialog1.Font; 7.5 About对话框 对话框单击菜单项目|添加Windows窗体菜单项, 单击菜单项目|添加Windows窗体菜单项,弹出对话框 Windows窗体1314如上图添加一个窗体,修改formAbout窗体属性 如上图添加一个窗体,修改formAbout窗体属性 formAbout StartPosition=CenterParent, StartPosition=CenterParent, 修改属性MaximizeBox=False,MinimizeBox=False 修改属性MaximizeBox=False, MaximizeBox=False 属性FormBorderStyle=FixedDialog 属性FormBorderStyle=FixedDialog 如下: 运行界面 如下:15标题为“确定”按钮单击事件处理函数如下: 标题为“确定”按钮单击事件处理函数如下: private void button1_Click(object sender,EventArgs e) Close(); 为菜单增加顶级菜单项:帮助, 为菜单增加顶级菜单项:帮助,为其弹出菜单增加标 题为“关于”的菜单项,属性Name为 的菜单项, Name为 题为“关于 的菜单项 属性Name menuItemAbout。菜单“帮助|关于”菜单项单击事 menuItemAbout。菜单“帮助|关于”菜单项单击事 件处理函数如下: 件处理函数如下: private void menuItemAbout_Click( object sender,EventArgs e) formAbout AboutDialog=new formAbout(); AboutDialog.ShowDialog(this);/打开模式对话框 AboutDialog.ShowDialog(this);/打开模式对话框 /注意不能使用Show()函数 注意不能使用Show()函数, /注意不能使用Show()函数,它打开非模式对话框167.6 文本编辑器查找替换功能本节首先介绍模式对话框和非模式对话框的概念。 本节首先介绍模式对话框和非模式对话框的概念。并使 用非模式对话框在文本编辑器中实现查找和替换功能。 用非模式对话框在文本编辑器中实现查找和替换功能。 7.6.1 模式对话框和非模式对话框模式对话框和非模式对话框的区别是: 模式对话框和非模式对话框的区别是: 两类对话框本质上都是窗体,是Form类的派生类,只是打开 两类对话框本质上都是窗体, Form类的派生类, 类的派生类 时使用的方法不一样,打开模式对话框, 时使用的方法不一样,打开模式对话框,使用方法 ShowDialog(),而打开非模式对话框,使用方法Show() Show()。 ShowDialog(),而打开非模式对话框,使用方法Show()。7.6.2 查找替换功能的实现17建立新窗体,窗体文件名称为formFindReplace.cs,作为 建立新窗体,窗体文件名称为formFindReplace.cs,作为查找替 formFindReplace.cs 对话框。窗体类名也为formFindReplace, formFindReplace,为 换对话框。窗体类名也为formFindReplace,为formFindReplace 类增加变量: 类增加变量:Form1 MainForm1; 属性StartPosition=CenterParent MaximizeBox=False, StartPosition=CenterParent, 属性StartPosition=CenterParent,MaximizeBox=False, MinimizeBox=False, FormBorderStyle=FixedDialog, Text=“查找和替换 查找和替换” 对话框界面如图: Text= 查找和替换” ,对话框界面如图:7.6.2 查找替换功能的实现 (续)18修改formFindReplace类构造函数如下,增加的参数form1是主窗体 修改formFindReplace类构造函数如下,增加的参数form1是主窗体 formFindReplace类构造函数如下 form1 属性Name的值。 Name的值 属性Name的值。 public formFindReplace(Form1 form1) InitializeComponent(); /新增语句 记录主窗体属性Name 新增语句, Name的值 MainForm1=form1;/新增语句,记录主窗体属性Name的值 /有了Form1引用 可以在formFindReplace类中调用Form1 有了Form1引用, formFindReplace类中调用Form1类的公有方法 /有了Form1引用,可以在formFindReplace类中调用Form1类的公有方法 查找替换对话框中标题为 查找下一个”按钮单击事件函数如下: 中标题为“ 查找替换对话框中标题为“查找下一个”按钮单击事件函数如下: private void buttonFind_Click(object sender,EventArgs e) if(textBox1.Text.Length!=0) /MainForm1.FindRichTextBoxString方法见后面定义 /MainForm1.FindRichTextBoxString方法见后面定义 MainForm1.FindRichTextBoxString(textBox1.Text); else MessageBox.Show(“查找字符串不能为空 查找字符串不能为空” MessageBox.Show( 查找字符串不能为空”, 提示,MessageBoxButtons.OK); 提示,MessageBoxButtons.OK); /MessageBox是对话框 使用方法见4.7.1 是对话框, 4.7.1节 /MessageBox是对话框,使用方法见4.7.1节7.6.2 查找替换功能的实现 (续)19查找替换对话框中标题为“替换查到字符” 查找替换对话框中标题为“替换查到字符”按钮单击事件函数如 中标题为 下: private void buttonReplace_Click(object sender,EventArgs e) if(textBox2.Text.Length!=0) MainForm1.ReplaceRichTextBoxString(textBox2.Text); else / MainForm1.ReplaceRichTextBoxString后面定义 后面定义 MessageBox.Show(“替换字符串不能为空”, 替换字符串不能为空” 替换字符串不能为空 提示 MessageBoxButtons.OK); 提示, 提示 Form1类增加变量 类增加变量: FindPostion=0, 为Form1类增加变量:int FindPostion=0,该变量用来记录下一 次查找的开始位置。为Form1窗体菜单的编辑顶级菜单项的 次查找的开始位置。 Form1窗体菜单的编辑 窗体菜单的 弹出菜单增加菜单项:查找和替换,属性Name Name为 弹出菜单增加菜单项:查找和替换,属性Name为 menuItemFindReplace。 查找和替换 menuItemFindReplace。查找和替换菜单项单击事件处理函 数如下: 数如下:7.6.2 查找替换功能的实现 (续)20private void menuItemFindReplace_Click( object sender,EventArgs e) /下句中的this是Form1类对象引用 下句中的this FindPostion=0; /下句中的this是Form1类对象引用 formFindReplace FindReplaceDialog=new formFindReplace(this); /打开非模式对话框使用Show()方法 打开非模式对话框使用Show() FindReplaceDialog.Show(); /打开非模式对话框使用Show()方法 定义FindRichTextBoxString FindRichTextBoxString方法 定义FindRichTextBoxString方法 public void FindRichTextBoxString(string FindString) if(FindPostion=richTextBox1.Text.Length) MessageBox.Show(“已到文本底部 已到文本底部, MessageBox.Show( 已到文本底部,再次查找将从文本开始处 查找”,提示 提示,MessageBoxButtons.OK); 查找”,提示,MessageBoxButtons.OK); /下次查找的开始位置 FindPostion=0; /下次查找的开始位置 return; 7.6.2 查找替换功能的实现 (续)21FindPostion=richTextBox1.Find(FindString,FindPostion, RichTextBoxFinds.MatchCase); if(FindPostion=-1)/- 表示未找到匹配字符串, if(FindPostion=-1)/-1表示未找到匹配字符串,提示用户 MessageBox.Show(未找到匹配字符串 未找到匹配字符串, MessageBox.Show(未找到匹配字符串,再次查找将从文本开 始处查找,提示, ,提示 始处查找,提示, MessageBoxButtons.OK); /下次查找的开始位置 FindPostion=0; /下次查找的开始位置 /找到匹配字符串 else /找到匹配字符串 /主窗体成为注视窗口 richTextBox1.Focus(); /主窗体成为注视窗口 FindPostion+=FindString.Length; /下次查找的开始位置在此次找到字符串之后 /下次查找的开始位置在此次找到字符串之后 7.6.2 查找替换功能的实现 (续)22替换字符串的方法 : public void ReplaceRichTextBoxString( string ReplaceString) if(richTextBox1.SelectedText.Length!=0) richTextBox1.SelectedText=ReplaceString; /替换被选定的字符串 /替换被选定的字符串7.6.2 查找替换功能的实现 (续)查找和替换运行结果 :2324对话框MessageBox 7.7.1 对话框MessageBox.Show(this,要保存当前更改吗?,保存更改吗? MessageBox.Show(this,要保存当前更改吗?,保存更改吗?, 要保存当前更改吗 保存更改吗 MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question);257.7.2 提示保存已被修改的文件为Form1类增加一个bool变量bSave=false作为标记,用 Form1类增加一个bool变量bSave=false作为标记, 类增加一个bool变量bSave=false作为标记 来跟踪控件RichTextBox中的文本内容是否被修改。 RichTextBox中的文本内容是否被修改 来跟踪控件RichTextBox中的文本内容是否被修改。在 程序开始运行、建立和打开一个新文件后, 程序开始运行、建立和打开一个新文件后, bSave=false,表示如果关闭当前文件, bSave=false,表示如果关闭当前文件,不必提示用户 保存当前文件。 RichTextBox控件中的文本被修改 控件中的文本被修改, 保存当前文件。当RichTextBox控件中的文本被修改, 将激活RichTextBox控件TextChanged事件,在该事件 将激活RichTextBox控件TextChanged事件, RichTextBox控件TextChanged事件 处理函数中, bSave=true,表示关闭当前文件前, 处理函数中,使bSave=true,表示关闭当前文件前, 要询问用户是否保存当前已被修改的文件。 要询问用户是否保存当前已被修改的文件。 首先在主窗体Form1类中增加一个函数, Form1类中增加一个函数 首先在主窗体Form1类中增加一个函数,其功能是如果检 查到当前文件已被修改, 查到当前文件已被修改,用对话框询问用户是否保存 当前文件,根据用户的选择作相应的处理, 当前文件,根据用户的选择作相应的处理,该函数返 回true,表示继续操作,该函数返回false,表示忽略 true,表示继续操作,该函数返回false, false 此次操作。 此次操作。之所以要增加这个函数是因为有三处要用 到此函数。该函数定义如下: 到此函数。该函数定义如下:26 public bool IfSaveOldFile() bool ReturnValue=true; if(bSave) System.Windows.Forms.DialogResult dr; dr=MessageBox.Show(this,“要保存当前更改吗 要保存当前更改吗? dr=MessageBox.Show(this, 要保存当前更改吗?”, 保存更改吗? 保存更改吗?, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); /根据用户选择做相应处理 switch(dr) /根据用户选择做相应处理 case System.Windows.Forms.DialogResult.Yes: bSave=false;/保存文件后,应使bSave为false bSave=false;/保存文件后,应使bSave为 保存文件后 bSave if(s_FileName.Length!=0) richTextBox1.SaveFile(s_FileName, RichTextBoxStreamType.PlainText);27else SaveFileDialog saveFileDialog1= new SaveFileDialog(); if(saveFileDialog1.ShowDialog()= DialogResult.OK) s_FileName=saveFileDialog1.FileName; richTextBox1.SaveFile(s_FileName, RichTextBoxStreamType.PlainText); /返回true通知调用本方法的程序本次操作继续 返回true /返回true通知调用本方法的程序本次操作继续 ReturnValue=true; break;28/单击了no按钮,不保存 /单击了no按钮, 单击了no按钮 case System.Windows.Forms.DialogResult.No: bSave=false; ReturnValue=true; break; /单击了Cancel按钮 单击了Cancel /单击了Cancel按钮 case System.Windows.Forms.DialogResult.Cancel: ReturnValue=false; break; /返回false,通知调用本方法的程序, 返回false /返回false,通知调用本方法的程序,本次操作取消 return ReturnValue; 29提示保存已被修改的文件( 7.7.2 提示保存已被修改的文件(续)在菜单“文件|新建” 在菜单“文件|新建”和“文件|打开”菜单项的事件函数的第1条 文件|打开”菜单项的事件函数的第1 语句前增加如下语句: 语句前增加如下语句: /如果返回false本次操作取消 如果返回false if(!IfSaveOldFile() /如果返回false本次操作取消 return; 修改菜单“文件|保存. 菜单项单击事件处理函数如下: .”菜单项单击事件处理函数如下 修改菜单“文件|保存. 菜单项单击事件处理函数如下: private void menuItemSaveFile_Click( object sender,EventArgs e) if(s_FileName.Length!=0) bSave=false; richTextBox1.SaveFile(s_FileName, RichTextBoxStreamType.PlainText); else menuItemSaveAs_Click(sender,e); 30提示保存已被修改的文件( 7.7.2 提示保存已被修改的文件(续)修改菜单“文件|另存为.”菜单项单击事件函数如下 修改菜单“文件|另存为. 菜单项单击事件函数如下: . 菜单项单击事件函数如下: private void menuItemSaveAs_Click( object sender,EventArgs e) SaveFileDialog saveFileDialog1=new SaveFileDialog(); saveFileDialog1.Filter=纯文本文件(*.txt)|*.txt|所有文件 纯文本文件(*.txt)|*.txt| saveFileDialog1.Filter=纯文本文件(*.txt)|*.txt|所有文件 (*.*)|*.*; saveFileDialog1.FilterIndex=1; if(saveFileDialog1.ShowDialog()=DialogResult.OK) s_FileName=saveFileDialog1.FileName; richTextBox1.SaveFile(s_FileName, RichTextBoxStreamType.PlainText); bSave=false; 31提示保存已被修改的文件( 7.7.2 提示保存已被修改的文件(续)为RichTextBox控件TextChanged事件增加事件函数如下: RichTextBox控件TextChanged事件增加事件函数如下: 控件TextChanged事件增加事件函数如下 private void richTextBox1_TextChanged( object sender,EventArgs e) bSave=true; 窗体Form1 FormClosing事件是在关闭窗口之前产生的 Form1的 窗体Form1的FormClosing事件是在关闭窗口之前产生的 事件,此时,窗体中的控件还存在, 事件,此时,窗体中的控件还存在,还可以保存修改 的内容,也可以不退出。增加Closing Closing事件的事件处理 的内容,也可以不退出。增加Closing事件的事件处理 函数如下: 函数如下: private void Form1_FormClosing(object sender, FormClosingEventArgs e) if(!IfSaveOldFile() /不退出 不退出, e.Cancel=true; /不退出,程序继续运行327.8 打印和打印预览自学7.9 编写多文档界面应用程序 7.9.1 多文档文本编辑器建立一个类似Microsoft Word的编辑器,有多页,每 的编辑器, 建立一个类似 的编辑器 有多页, 页处理一个文档。多文档界面(MDI)应用程序有一 页处理一个文档。多文档界面 应用程序有一 个父窗体(主窗体 主窗体), 个父窗体 主窗体 ,父窗体在其工作区内包含一组 子窗体。 子窗体。每个子窗体都是一个限制为只能在父窗体 内出现的窗体。 内出现的窗体。这些子窗体通常共享父窗体的菜单 工具栏以及其他部分。 栏、工具栏以及其他部分。 运行效果如下图,主窗体中的子窗体为层叠排列。 运行效果如下图,主窗体中的子窗体为层叠排列。33347.9.1 多文档文本编辑器 续) 多文档文本编辑器(续7.9.1 多文档文本编辑器 续) 多文档文本编辑器(续35新建一个新项目。修改Form1窗体属性 新建一个新项目。修改Form1窗体属性 Form1 IsMdiContainer=true,表示主窗体是一个子窗体容器。 IsMdiContainer=true,表示主窗体是一个子窗体容器。放菜 单控件MenuStrip到主窗体。为菜单增加文件顶级菜单项。 MenuStrip到主窗体 单控件MenuStrip到主窗体。为菜单增加文件顶级菜单项。 文件顶级菜单项的弹出菜单增加菜单项:新建、打开、 为文件顶级菜单项的弹出菜单增加菜单项:新建、打开、另 存为、关闭当前窗口、退出。为菜单增加窗口顶级菜单项。 存为、关闭当前窗口、退出。为菜单增加窗口顶级菜单项。 窗口顶级菜单项的弹出菜单中增加菜单项:水平平铺、 在窗口顶级菜单项的弹出菜单中增加菜单项:水平平铺、层 垂直平铺。设置菜单控件MenuStrip MenuStrip的 叠、垂直平铺。设置菜单控件MenuStrip的MdiWindowListItem 属性为“窗口”顶级菜单项的Name属性值, Name属性值 窗口” 属性为“窗口”顶级菜单项的Name属性值,使“窗口”顶级菜 单项的弹出菜单下部增加子窗口列表。 VS2005集成环境中 集成环境中, 单项的弹出菜单下部增加子窗口列表。在VS2005集成环境中, 单击菜单“项目|添加Windows窗体”菜单项,创建子窗体。 Windows窗体 单击菜单“项目|添加Windows窗体”菜单项,创建子窗体。窗 体文件名称为FormChild.cs 窗体的类名也定义为FormChild FormChild.cs, FormChild。 体文件名称为FormChild.cs,窗体的类名也定义为FormChild。 RichTextBox1控件到子窗体 修改属性Dock=Fill 控件到子窗体。 Dock=Fill, 放RichTextBox1控件到子窗体。修改属性Dock=Fill, Modifiers =public,使RichTextBox1为公有成员,在主窗体 =public, RichTextBox1为公有成员, 为公有成员 可以访问RichTextBox1 RichTextBox1。 OpenFileDialog和 可以访问RichTextBox1。放OpenFileDialog和SaveFileDialog 菜单各菜单项事件处理函数如下: 控件到主窗体 。菜单各菜单项事件处理函数如下:7.9.1 多文档文本编辑器 续) 多文档文本编辑器(续36新建ToolStripMenuItem_Click( private void 新建ToolStripMenuItem_Click( object sender, EventArgs e) FormChild(); FormChild formChild=new FormChild(); formChild.MdiParent=this; formChild.MdiParent=this; formChild.Show(); 打开ToolStripMenuItem_Click( private void 打开ToolStripMenuItem_Click( object sender, EventArgs e) if(openFileDialog1 ShowDialog(this)=DialogResult. if(openFileDialog1.ShowDialog(this)=DialogResult.OK) FormChild(); FormChild ChildForm=new FormChild(); ChildForm.MdiParent=this; ChildForm.MdiParent=this; ChildForm.richTextBox1.LoadFile(openFileDialog1.File ChildForm.richTextBox1 LoadFile(openFileDialog1 Name,RichTextBoxStreamType.PlainText); Name,RichTextBoxStreamType.PlainText); ChildForm.Show(); ChildForm.Show(); 7.9.1 多文档文本编辑器 续) 多文档文本编辑器(续37另存为ToolStripMenuItem_Click( private void 另存为ToolStripMenuItem_Click( object sender, EventArgs e) if(saveFileDialog1 ShowDialog(this)=DialogResult. if(saveFileDialog1.ShowDialog(this)=DialogResult.OK) ChildForm=(FormChild)this.ActiveMdiChild; FormChild ChildForm=(FormChild)this.ActiveMdiChild; ChildForm.richTextBox1.SaveFile(saveFileDialog1. ChildForm.richTextBox1 SaveFile(saveFileDialog1 FileName,RichTextBoxStream
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国食品饮料行业品牌建设与市场营销策略规划分析报告
- 2026人工智能客服机器人应用场景拓展与运营成本优化
- 2026生物技术行业投资发展分析及投资融资战略
- 2026人工智能财务审计功能实现与会计准则的变革深度文件
- 2026量子通信卫星行业市场现状供需分析及投资评估规划分析研究报告
- 钻井作业HSE要求培训课件
- 2026轮胎行业绿色制造与海外市场拓展战略
- 低压电工考试试题及答案题库大全
- 康复治疗学试题及答案
- 农业银行后备科级干部竞聘笔试题和面试题及参考答案
- GB/T 37539-2025火电厂腐蚀控制工程全生命周期通用要求
- 痴呆BPSD评估与管理实践指南+2025版
- 2025-2026年高中一年级地理(人文地理)下学期期中测试卷
- 2025年郧西县事业单位联考招聘考试真题汇编必考题
- 2025高中历史大事年表完整版文档
- 移动式操作平台专项施工方案(二期)
- 断电上锁挂牌安全培训课件
- 消防工程造价控制重点、难点分析及应对措施
- 宿管员管理课件
- 工程铺砖合同协议
- 消防-认识及使用消防器材
评论
0/150
提交评论