《mdi应用程序操作步骤及代码最新》由会员分享,可在线阅读,更多相关《mdi应用程序操作步骤及代码最新(15页珍藏版)》请在金锄头文库上搜索。
1、1实现 MDI 应用程序目标:一、实现 MDI1、创建父窗体 frmMdiFather,设置其 Name、Text、IsMdiContainer 属性2、添加 StatusStrip 控件,修改其 Text 属性为空3、创建子窗体 frmChild,设置其 Name 属性4、为父窗体添加构造函数:public frmMdiFather()InitializeComponent();frmChild doc = new frmChild(this); doc.Show();同时修改子窗体构造函数public frmChild(frmMdiFather parent)InitializeCompo
2、nent();this.MdiParent = parent;运行看效果:父子窗体之间的关系。二、添加菜单和 RichTextBox 控件5、为父窗体添加主菜单文件|新建、打开、退出,并修改其 Name 属性(MunuFile 和 MenuNew)6、为子窗体添加 RichTextBox 控件,并设置其 Anchor 属性7、为“新建”菜单添加事件处理函数:/声明并初始化全局变量,用来记录打开的子窗体数目int windowCount=1;修改子窗体构造函数/此处增加注释public frmChild(frmMdiFather parent,string caption)InitializeC
3、omponent();2this.MdiParent = parent;this.Text=caption; /子窗体标题同时修改父子窗体的构造函数public frmMdiFather()InitializeComponent();windowCount+;string caption=”文档”+windowCount;frmChild doc = new frmChild(this,caption); doc.Show();/“文件”|“新建”菜单项单击事件处理函数private void MenuNew_Click(object sender, EventArgs e)windowCou
4、nt+;string caption= 文档 + windowCount;frmChild doc = new frmChild(this, caption); doc.Show();三、RichTextBox 控件(1) 公共属性: AcceptsTab 获取或设置一个值,该值指示在多行文本框控件中按 Tab 键时,是否在控件中输入一个 Tab 字符,而不是按选项卡的顺序将焦点移动到下一个控件。 AutoSize 获取或设置一个值,通过该值指示当分配给控件的字体发生更改时,RichTextBox 的大小是否自动调整。 DetectUrls 获取或设置一个值,通过该值指示当在控件中输入某个统一
5、资源定位符(URL) 时,RichTextBox 是否自动设置 URL 的格式。 Lines 获取或设置文本框控件中的文本行。 RightMargin 获取或设置 RichTextBox 控件内单个文本行的大小。 ScrollBars 获取或设置 RichTextBox 控件中显示的滚动条类型。 SelectedRtf 获取或设置控件中当前选定的 RTF 格式的格式化文本。 SeleetedText 获取或设置 RichTextBox 内的选定文本。 SelectionBullet 获取或设置一个值,通过该值指示项目符号样式是否应用到当前选定内容或插入点。 SelectionColor 获取或
6、设置当前选定文本或插入点的文本颜色。 SelectionFont 获取或设置当前选定文本或插入点的字体。 SelectionLength 获取或设置控件中选定的字符数。 SeleetionStart 获取或设置文本框中选定的文本起始点。(2)公共方法:3 Clear 从文本框控件中清除所有文本。 Cut 将文本框中当前选定的内容剪切到剪贴板上。 Copy 将文本框中的当前选定内容复制到剪贴板上。 LoadFile 将文件的内容加载到 RichTextBox 控件中。 Paste 将剪贴板的内容粘贴到控件中。 SaveFile 将 RichTextBox 的内容保存到文件中。(3)公共事件: I
7、meChange 当在中文版的 Windows 操作系统上切换输入方法时发生。 LinkClicked 当用户在控件文本内的链接上单击时发生。 SelectionChanged 控件内的选定文本更改时发生。 TabStopChanged TabStop 属性值更改时发生。 VScroll 当用户单击控件的垂直滚动条时发生。RichTextBox 控件实例支持的功能之一就是能读写文本和 RTF 文件,利用了公共方法 LoadFile()和 SaveFile(),其语法形式如下所示。LoadFile(string path,RichTextBoxStreamType filetype);SaveF
8、ile(string path,RichTextBoxStreamType filetype);其中 path 参数包含了要打开或保存文件的文件夹和文件名。有关功能都内置到RichTextBox 控件中。可选的 filetype 枚举定义 LoadFile()或者 SaveFile()方法如何解释件的内容。rtbText.LoadFile(“C:/demo.rtf”,RichTextBoxStreamType.RichText);此句代码可以使用 RichTextBox 来读取 c 盘根目录下的文件 demo.rtf。rtbText.SaveFile(“C:/demo.rtf”,RichTex
9、tBoxStreamType.RichText);此句代码可以实现使用 RichTextBox 将文件 demo.rtf 保存到 c 盘根目录下。需要注意的是,如果试图以富文本框来打开一个文件,而文件格式不是 RTF 时,就会发生 System.ArgumentException 异常。 8、为“文件”|“打开”菜单项添加代码:(1)首先将子窗体的 RichTextBox 控件的可访问性(Modifier)修改成 Public初始值为 private(2)增加全局变量: public bool isOpen; /标志变量,记录文件是“打开”|“新建”修改父、子窗体构造函数:public boo
10、l isOpen; /标识变量,记录当前文档是新建还是打开的public frmMdiFather()InitializeComponent();windowCount+;string caption=”文档”+windowCount;frmChild doc = new frmChild(this,caption,false); doc.Show();同时修改“文件”|“新建”菜单,代码参考父窗体构造函数/子窗体构造函数public frmChild(frmMdiFather parent,string caption, bool isOpen)4InitializeComponent();
11、this.MdiParent = parent;this.Text = caption;this.isOpen = isOpen;为父窗体的“文件”|“打开”菜单添加事件处理函数/“文件” “打开”菜单事件处理函数private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)OpenFileDialog oplg = new OpenFileDialog();oplg.Filter = 格式文档 (*.rtf)|*.rtf|纯文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*;DialogResult dlg
12、rs;dlgrs=oplg.ShowDialog();if (dlgrs != DialogResult.Cancel)try/将文件名(包括路径)传给子窗体,用来作为标题,并为保存文件时使用string name = oplg.FileName;/创建子窗体实例frmChild frm = new frmChild(this,name,true);frm.Show();if (dlgrs = DialogResult.OK)RichTextBoxStreamType fileType;/根据筛选器确定要打开的文件类型switch (oplg.FilterIndex)case 1:fileTy
13、pe = RichTextBoxStreamType.RichText;break;case 2:fileType = RichTextBoxStreamType.PlainText;break;default:fileType = RichTextBoxStreamType.UnicodePlainText;break; RichTextBox theBox = (RichTextBox)frm.ActiveControl;theBox.LoadFile(oplg.FileName, fileType); 5catch (Exception)MessageBox.Show(由于格式错误暂时打
14、不开该文件!, 错误, MessageBoxButtons.OK);23、为“文件”|“另存为” 菜单项添加代码:设置全局变量 textChanged,用于存储文本框中的文字是否发生变化,从而此变量在关闭窗体时用于判断是否弹出对话框。public bool textChanged = false;为 richTextBox1 添加事件处理函数private void richTextBox1_TextChanged(object sender, EventArgs e)textChanged = true;/“文件”“另存为”菜单事件处理函数private void MenuSave_Clic
15、k(object sender, EventArgs e)SaveFileDialog savedlg = new SaveFileDialog();savedlg.Filter = 格式文档 (*.rtf)|*.rtf|纯文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*;DialogResult dlgResult;dlgResult = savedlg.ShowDialog();frmChild frm = (frmChild)this.ActiveMdiChild;RichTextBox theBox = (RichTextBox)frm.ActiveControl;if (dlgResult = DialogResult.OK)theBox.SaveFile(savedlg.FileName, RichTextBoxStreamType.RichText);this.Text = savedlg.FileName;/Textchanged = false; 声明两个方法成员/如果文件是“打开”菜单打开的,即已知文件的路径,则直接保存至原路径,/如果文件是“新建”菜单打开的,则需弹出保存文件对话框来选择保存的路径private void _Save()