多文档MDI窗体
来源:互联网 发布:天网 软件 编辑:程序博客网 时间:2024/06/09 22:51
多文档窗体是一种应用非常广泛的窗体类型,即在主窗体中包含多个子窗体,并且子窗体不会显示在主窗体的外面。当子窗体不能完全显示在主窗体中时,主窗体会显示滚动条来调整可视范围。 程序运行后,单击“文件——新建”命令(快捷键:ctrl+N),就可以新建子窗体,如果在主窗体中同时有多个子窗体时,可以利用“窗口”菜单来管理。单击“窗口——层叠”命令,就可以层叠所有子窗体,单击“窗口——横向平铺”命令,就可以横向平铺子窗体,单击“窗口——竖向平铺”命令,就可以竖向平铺子窗体。此外还有“打开”、“保存”、“字体”、“页面设置”、“打印预览”等功能。
制作要点:
1、窗体的IsMdiCotainer属性的应用。
2.下拉菜单MenuStrip控件的应用。
3.状态栏StatusStrip控件的应用。4.打开对话框OpenFileDialog和保存对话框SaveFileDialog的应用。
5.页面设置对话框PageSetupDialog和页面打印控件PrintDocument的应用。
6.打印预览对话框PrintPreviewDialog的应用。
7.字体对话框FontDialog的应用。
8.日期时间对象DateTime的应用。
9.RichTextBox控件的应用。
10.剪贴板对象Clipboard的应用。
11.字符串流对象StringReader的应用。
制作步骤:
1.新建一个Windows窗体应用程序。设置"Text"属性为“MDI应用程序”,为了把该窗体变成多文档(MDI)应用程序的主窗体,就要把窗体的"IsMdiContainer"属性为"True"(注意,只有把普通窗体的IsMdiContainer属性设置为True,才能把窗体变成主窗体,才能设置其他窗体的MdiParent属性为该窗体)。
2.添加MenuStrip控件,在菜单栏中输入“文件(F)”,依次添加如下图:
3.如果要设置菜单的快捷键,只须设置菜单的"ShortcutKeys"属性即可。
4.添加"StatusStrip"控件,添加状态栏。单击左下角的下拉按钮,选择"StatusLabel"命令,在这里添加1个状态栏标签。设置其"Text"为“当前日期:”如图:
5.为了实现文件的动态打开。添加OpenFileDialog控件,为了实现文件的动态保存,添加SaveFileDialog控件。为了实现文件的页面设置功能,要添加PageSetupDialog控件和PrintDocument控件,要实现文件打开预览功能,要添加PrintPreviewDialog控件。为了实现选择文本的格式化设置,要添加FontDialog控件。
6。添加一个子窗体,“项目——添加Windows窗体”,设置其"Text"属性为“子窗体”,单击工具箱中的RichTextBox控件,然后按下鼠标左键在窗体上绘制,就可以添加到应用程序中。为了使其能充满整个窗体,设置"Dock"属性为"Fill",最后设置"Modifiers"属性为"Public",这样在现今Form2窗体对象实例时就可以利用该RichTextBox控件了。
添加代码:
1.双击Form1窗体,导入Sysem.IO命名空间:
using System.IO();
2.定义公用变量:
</pre><pre name="code" class="html">
//新建Form2对象实例 Form2 myf = new Form2(); //字符串流对象,一行一行读取文本 public StringReader MySreader; //记录新建子窗体个数 public int x = 1;
3.双击窗体,添加:
private void Form1_Load(object sender, EventArgs e) { //显示当前日期与时间 toolStripStatusLabel2.Text = " 当前日期: " + DateTime.Now.ToString(); }4.单击菜单栏总的“新建”等各个命令,添加代码如下:
private void 新建NCtrlNToolStripMenuItem_Click(object sender, EventArgs e) { Form2 myf = new Form2(); //设置为子窗体 myf.MdiParent = this; //设置子窗体的标题 myf.Text = "新建文件" + x.ToString(); //状态栏提示信息 toolStripStatusLabel1.Text = "状态:新建文档"; x = x + 1; //显示子窗体 myf.Show(); } private void 打开OCtrlOToolStripMenuItem_Click(object sender, EventArgs e) { //设置打开对话框的文件类型 openFileDialog1.Filter = "*.txt|*.txt"; //设置打开对话框的标题 openFileDialog1.Title = "打开"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { //提取打开文件的文件名 string strname = openFileDialog1.FileName; //设置子窗体文件名 myf.Text = openFileDialog1.FileName; //打开文件 myf.richTextBox1.Clear(); myf.richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText); //设置窗体为子窗体 myf.MdiParent = this; //显示子窗体 myf.Show(); //状态栏提示信息 toolStripStatusLabel1.Text = toolStripStatusLabel1.Text + "打开文件"; } } private void 保存SCtrlSToolStripMenuItem_Click(object sender, EventArgs e) { //设置保存对话框类型 saveFileDialog1.Filter = "文本文件(*txt)|.txt"; saveFileDialog1.FilterIndex = 2; //保存文件 if (saveFileDialog1.ShowDialog() == DialogResult.OK) { myf.richTextBox1.SaveFile(saveFileDialog1.FileName,RichTextBoxStreamType.PlainText); } } private void 页面设置VToolStripMenuItem_Click(object sender, EventArgs e) { //页面设置的内容 pageSetupDialog1.Document = this.printDocument1; //页面设置对话框 pageSetupDialog1.ShowDialog(); }要实现打开预览功能,首先双击printDocument1控件,添加: private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { Graphics frmGraphics = e.Graphics; //设置字体类型 Font frmFont = myf.richTextBox1.Font; //每一页的行数 float intpage = e.MarginBounds.Height; frmFont.GetHeight(frmGraphics); //打印的行数计数 int intPratn = 0; //打印时的纵坐标 float fYposition = 0; float fLeft = e.MarginBounds.Left; float fTop = e.MarginBounds.Top; string strfrmling = ""; while((intPratn<intpage)&&(strfrmling=MySreader.ReadLine())!=null) { fYposition = fTop + intPratn * frmFont.GetHeight(frmGraphics); frmGraphics.DrawString(strfrmling,frmFont,new SolidBrush(Color.Black),fLeft,fYposition,new StringFormat()); intPratn++; } if (strfrmling != null) { //没有打印完发出下一页打印事件 e.HasMorePages = true; } else { e.HasMorePages = false; } }
其他命令:
private void 打印预览PToolStripMenuItem_Click(object sender, EventArgs e) { printPreviewDialog1.Document = printDocument1; //打印预览内容 MySreader = new StringReader(myf.richTextBox1.Text); try { //打印预览对话框 printPreviewDialog1.ShowDialog(); } catch { printDocument1.PrintController.OnEndPrint(printDocument1,new System.Drawing.Printing.PrintEventArgs()); } } private void 退出QToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); Application.Exit(); } private void 剪切TToolStripMenuItem_Click(object sender, EventArgs e) { int CutInt = myf.richTextBox1.SelectionStart; Clipboard.SetDataObject(myf.richTextBox1.SelectedText); myf.richTextBox1.Text = myf.richTextBox1.Text.Substring(0, CutInt) + myf.richTextBox1.Text.Substring(CutInt,myf.richTextBox1.SelectedText.Length); myf.richTextBox1.SelectionStart = CutInt; } private void 复制ToolStripMenuItem_Click(object sender, EventArgs e) { //复制选择文本 Clipboard.SetDataObject(myf.richTextBox1.SelectedText); } private void 粘贴PToolStripMenuItem_Click(object sender, EventArgs e) { IDataObject idat = Clipboard.GetDataObject(); if (idat.GetDataPresent(DataFormats.Text)) { string PasteStr = (string)idat.GetData(DataFormats.Text); int pasteid = myf.richTextBox1.SelectionStart; myf.richTextBox1.Text = myf.richTextBox1.Text.Substring(0, pasteid) + PasteStr + myf.richTextBox1.Text.Substring(pasteid); myf.richTextBox1.SelectionStart = pasteid + PasteStr.Length; } } private void 全选AToolStripMenuItem_Click(object sender, EventArgs e) { //全选文本 myf.richTextBox1.SelectAll(); } private void 字体FToolStripMenuItem_Click(object sender, EventArgs e) { fontDialog1.ShowDialog(); fontDialog1.AllowVerticalFonts = true; fontDialog1.FixedPitchOnly = true; fontDialog1.ShowApply = true; fontDialog1.ShowEffects = true; if (myf.richTextBox1.SelectedText == "") { //设置所有文本字体属性 myf.richTextBox1.Font = fontDialog1.Font; } else { //设置选择文本字体属性 myf.richTextBox1.SelectionFont = fontDialog1.Font; } } private void 层叠AToolStripMenuItem_Click(object sender, EventArgs e) { this.LayoutMdi(MdiLayout.Cascade); } private void 横向平铺FToolStripMenuItem_Click(object sender, EventArgs e) { this.LayoutMdi(MdiLayout.TileHorizontal); } private void 竖向平铺HToolStripMenuItem_Click(object sender, EventArgs e) { this.LayoutMdi(MdiLayout.TileVertical); } private void 图标排列TToolStripMenuItem_Click(object sender, EventArgs e) { this.LayoutMdi(MdiLayout.ArrangeIcons); }
- 多文档MDI窗体
- MDI窗体(多文档界面)
- MDI(多文档)子窗体多实例化控制
- 多文档界面(MDI)
- c# mdi多窗体实现
- 浅谈MDI窗体的多窗体编程
- C#使用_如何用C#写一个多文档窗体(MDI)
- C#学习笔记——MDI窗体(多文档界面)
- MDI窗体
- 多文档接口(MDI)
- Flex 多窗体显示 MDI Form
- C#MDI窗体实现多窗口效果
- [VB.NET]浅谈MDI窗体的多窗体编程
- [VB.NET]浅谈MDI窗体的多窗体编程2
- Win32教程32-多文档界面(MDI)
- MFC多文档(MDI)去边框
- C#的多文档界面(MDI)
- MDI多种类型文档,多视图
- C#通过关键字访问文本特定内容
- Fedora11下安装和运行wireshark
- android导入txt格式通讯录
- 图书馆管理系统-面向对象的分析与设计(总实验)
- 用Swift语言和Sprite Kit复制微信飞机大战游戏
- 多文档MDI窗体
- Ldap目录服务器查询用户中文名的代码示例
- Struts2中action跳转jsp页面CSS失效的问题分析
- 面向对象的控制驱动部分--总结
- 人机交互学习总结--OOAD
- Emacs学习手记
- debian7.5
- epoll学习(一)
- 设计模式-----观察者模式(Obsever)