1. 设计一个窗体应用程序,模拟写字板应用程序的基本功能。具体功能要求如下:

(1)“文件”菜单中有“新建”、“打开”、“保存”、“退出”子菜单。

(2)“编辑”菜单中有“剪切”、“复制”、“粘贴”、“撤销”、“重复”、“全选”子菜单。

(3)工具菜单中有“颜色”、“字体”、“状态栏”功能。

(4)帮助菜单中有“关于”菜单功能。

(5)实现“编辑”菜单中、“工具”栏目中“剪切”、“复制”、“粘贴”、“撤销”、“重复”、“全选”的功能。

(6)实现文件的新建、打开、保存功能。(利用RichTextBox控件)

(7)文件菜单添加打开文本文件、保存文本文件菜单项,实现文件的打开、保存功能。(利用文件读写类)

提示:

1)添加菜单栏、工具栏、RichTextBox控件。

2)在打开对话框中要想只显示文本文档,可以在通用对话框Filter属性中设置*.txt类别。richTextBoxLoadFileSaveFile方法中要指定文件流为RichTextBoxStreamType.PlainText

3)点击菜单和工具栏相关按钮都实现同一个功能,所以会调用同一个方法。设计一系列公有方法实现相关功能。建议完成一个方法,就运行测试一个方法,问题解决后再编写下一个方法,避免出现太多错误。

 

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace MyNote
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.toolStripStatusLabel1.Text = "Welcome To My Note";
this.toolStripStatusLabel2.Text = DateTime.Now.ToString(); } #region 自定义方法 public void TextCopy()
{
this.richTextBox1.Copy();
} public void TextCut()
{
this.richTextBox1.Cut();
} public void TextPaste()
{
this.richTextBox1.Paste();
} public void TextUndo()
{
this.richTextBox1.Undo();
} public void TextRedo()
{
this.richTextBox1.Redo();
} public void TextSelectAll()
{
this.richTextBox1.SelectAll();
} public void FileOpenMethod()
{
OpenFileDialog dia = new OpenFileDialog();
dia.Filter = "文本文件(*.txt)|*.txt|所有文件|*.*"; //dia.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
if (dia.ShowDialog() == DialogResult.OK)
{
this.richTextBox1.LoadFile(dia.FileName, RichTextBoxStreamType.PlainText);
this.toolStripStatusLabel1.Text = dia.SafeFileName;
this.toolStripStatusLabel2.Text = DateTime.Now.ToString();
}
} public void FileSaveMethod()
{
SaveFileDialog dia = new SaveFileDialog();
dia.Filter = "文本文件(*.txt)|*.txt|所有文件|*.*"; //dia.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
if (dia.ShowDialog() == DialogResult.OK)
{
this.richTextBox1.SaveFile(dia.FileName, RichTextBoxStreamType.PlainText);
}
} public void About()
{
AboutBox1 dia = new AboutBox1();
dia.ShowDialog();
}
#endregion #region 菜单栏方法
private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.toolStripStatusLabel1.Text = "New blank Page";
this.toolStripStatusLabel2.Text = DateTime.Now.ToString();
this.richTextBox1.Text = "";
} private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
FileOpenMethod();
} private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
FileSaveMethod();
} private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
{
TextCut();
}
private void 复制ToolStripMenuItem_Click(object sender, EventArgs e)
{
TextCopy();
} private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e)
{
TextPaste();
} private void 撤销ToolStripMenuItem_Click(object sender, EventArgs e)
{
TextUndo();
} private void 重复ToolStripMenuItem_Click(object sender, EventArgs e)
{
TextRedo();
}
private void 全选ToolStripMenuItem_Click(object sender, EventArgs e)
{
TextSelectAll();
} private void 颜色ToolStripMenuItem_Click(object sender, EventArgs e)
{
ColorDialog dia = new ColorDialog();
dia.Color = this.richTextBox1.SelectionColor;
if (dia.ShowDialog() == DialogResult.OK)
{
this.richTextBox1.SelectionColor = dia.Color;
}
} private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
{
FontDialog dia = new FontDialog();
dia.Font = this.richTextBox1.SelectionFont;
dia.Color = this.richTextBox1.SelectionColor;
dia.ShowColor = true;
if (dia.ShowDialog() == DialogResult.OK)
{
this.richTextBox1.SelectionFont = dia.Font;
this.richTextBox1.SelectionColor = dia.Color;
}
} private void 状态框ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.statusStrip1.Visible = !this.statusStrip1.Visible;
状态框ToolStripMenuItem.Checked = this.statusStrip1.Visible;
} private void 关于ToolStripMenuItem_Click(object sender, EventArgs e)
{
About();
} private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
} #endregion #region 工具栏方法 //新建按键
private void toolStripButton1_Click(object sender, EventArgs e)
{
this.toolStripStatusLabel1.Text = "New blank Page";
this.toolStripStatusLabel2.Text = DateTime.Now.ToString();
this.richTextBox1.Text = "";
} //打开按键
private void toolStripButton2_Click(object sender, EventArgs e)
{
FileOpenMethod();
} //保存按键
private void toolStripButton3_Click(object sender, EventArgs e)
{
FileSaveMethod();
} //复制按钮
private void toolStripButton4_Click(object sender, EventArgs e)
{
TextCopy();
} //剪切按钮
private void toolStripButton5_Click(object sender, EventArgs e)
{
TextCut();
} //粘贴按钮
private void toolStripButton6_Click(object sender, EventArgs e)
{
TextPaste();
} //撤销按钮
private void toolStripButton7_Click(object sender, EventArgs e)
{
TextUndo();
} //重复按钮
private void toolStripButton8_Click(object sender, EventArgs e)
{
TextRedo();
} private void toolStripButton9_Click(object sender, EventArgs e)
{
About();
}
#endregion
}
}

MyNote

【C#】上机实验八的更多相关文章

  1. Linux基础入门(新版)(实验五至实验八)

    实验五 环境变量与文件查找 (环境变量的作用与用法,及几种搜索文件的方法)   一.环境变量   1.变量 (1)常变量与值是一对一的关系 (2)变量的作用域即变量的有效范围(比如一个函数中.一个源文 ...

  2. lingo运筹学上机实验指导

    <运筹学上机实验指导>分为两个部分,第一部分12学时,是与运筹学理论课上机同步配套的4个实验(线性规划.灵敏度分析.运输问题与指派问题.最短路问题和背包问题)的Excel.LONGO和LI ...

  3. 算法课上机实验(一个简单的GUI排序算法比较程序)

    (在家里的电脑上Linux Deepin截的图,屏幕大一点的话,deepin用着还挺不错的说) 这个应该是大二的算法课程上机实验时做的一个小程序,也是我的第一个GUI小程序,实现什么的都记不清了,只记 ...

  4. 实验八 Web基础 SQL注入原理

    实验八 Web基础 实验要求 (1)Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2)Web前端javascipt ...

  5. 2017-2018-2 20155228 《网络对抗技术》 实验八:Web基础

    2017-2018-2 20155228 <网络对抗技术> 实验八:Web基础 1. 实践内容 1.1 Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET ...

  6. 计算机网络实验八实验报告——应用Packet Tracer 5.0模拟器工具对WLAN进行配置

    计算机网络实验八实验报告 一.实验目的 1.熟练使用Packet Tracer 5.0模拟器: 2.应用Packet Tracer 5.0模拟器工具对WLAN进行配置. 二.实验环境 一台PC机. 模 ...

  7. 实验八 应用层协议Ⅱ-FTP协议分析

    实验八 应用层协议Ⅱ-FTP协议分析 一.实验目的 1.掌握FTP协议的实现原理. 2.了解控制通道和数据通道. 二.实验内容 用WareShark追踪ftp连接. 1.三次握手 2.ftp服务器回发 ...

  8. 2017-2018-2 20155225《网络对抗技术》实验八 Web基础

    2017-2018-2 20155225<网络对抗技术>实验八 Web基础 1.Web前端HTML 输入命令apachectl start打开apahce,并使用netstat -aptn ...

  9. 20155201 网络攻防技术 实验八 Web基础

    20155201 网络攻防技术 实验八 Web基础 一.实践内容 Web前端HTML,能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. We ...

随机推荐

  1. 一篇来自hasura graphql-engine 百万级别live query 的实践

    转自:https://github.com/hasura/graphql-engine/blob/master/architecture/live-queries.md Scaling to 1 mi ...

  2. C# VS 调试 动态加载的 DLL

    原文:https://www.cnblogs.com/DasonKwok/p/10510218.html 在这篇文章的底部,有提供示例的Demo,可以参考一下哦,拿来直接就可以运行. 说明: 编译类库 ...

  3. 【JZOJ6217】【20190614】最大面积

    题意 平面上有\(n\)个点\(A_i\),\(q\)次询问,每次给出一个点\(P\),求: \[ \sum_{i=L}^{R} 2S_{\triangle OPA_i} \] 最大值,其中$S_{\ ...

  4. mysql mod() 获取余数

    mysql> ,); +-----------+ | mod(,) | +-----------+ | | +-----------+ row in set (0.00 sec)

  5. kms windows激活

    Microsoft KMS Activation Usage Start a Command Prompt as an Administrator. Windows slmgr.vbs -upk sl ...

  6. rust 函数的使用

    fn main() { println!("Hello, world!"); another_function(2,3); let y ={ let x =3; //表达式的结尾没 ...

  7. 作业——11 分布式并行计算MapReduce

    作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.用自己的话阐明Hadoop平台上HDFS和MapRedu ...

  8. semi-join子查询优化 -- Duplicate Weedout策略

    duplicate weedout是执行semi-join子查询的一种策略. 将semi-join作为一个常规的inner join.然后使用一个临时表,将重复的记录排除. 假设,你有一个查询,你在寻 ...

  9. Xamarin图表开发基础教程(4)OxyPlot框架

    Xamarin图表开发基础教程(4)OxyPlot框架 XamaminAndroid中绘制线图OxyPlotAndroidDemo [示例1-1:OxyPlotAndroidDemo]下面实现线图的绘 ...

  10. Gson字符串编码,字符串转换成图片保存,二进制转换成图片保存

    import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.File; import ...