【C#】上机实验八
1. 设计一个窗体应用程序,模拟写字板应用程序的基本功能。具体功能要求如下:
(1)“文件”菜单中有“新建”、“打开”、“保存”、“退出”子菜单。
(2)“编辑”菜单中有“剪切”、“复制”、“粘贴”、“撤销”、“重复”、“全选”子菜单。
(3)工具菜单中有“颜色”、“字体”、“状态栏”功能。
(4)帮助菜单中有“关于”菜单功能。
(5)实现“编辑”菜单中、“工具”栏目中“剪切”、“复制”、“粘贴”、“撤销”、“重复”、“全选”的功能。
(6)实现文件的新建、打开、保存功能。(利用RichTextBox控件)
(7)文件菜单添加打开文本文件、保存文本文件菜单项,实现文件的打开、保存功能。(利用文件读写类)
提示:
(1)添加菜单栏、工具栏、RichTextBox控件。
(2)在打开对话框中要想只显示文本文档,可以在通用对话框Filter属性中设置*.txt类别。richTextBox的LoadFile、SaveFile方法中要指定文件流为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#】上机实验八的更多相关文章
- Linux基础入门(新版)(实验五至实验八)
实验五 环境变量与文件查找 (环境变量的作用与用法,及几种搜索文件的方法) 一.环境变量 1.变量 (1)常变量与值是一对一的关系 (2)变量的作用域即变量的有效范围(比如一个函数中.一个源文 ...
- lingo运筹学上机实验指导
<运筹学上机实验指导>分为两个部分,第一部分12学时,是与运筹学理论课上机同步配套的4个实验(线性规划.灵敏度分析.运输问题与指派问题.最短路问题和背包问题)的Excel.LONGO和LI ...
- 算法课上机实验(一个简单的GUI排序算法比较程序)
(在家里的电脑上Linux Deepin截的图,屏幕大一点的话,deepin用着还挺不错的说) 这个应该是大二的算法课程上机实验时做的一个小程序,也是我的第一个GUI小程序,实现什么的都记不清了,只记 ...
- 实验八 Web基础 SQL注入原理
实验八 Web基础 实验要求 (1)Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2)Web前端javascipt ...
- 2017-2018-2 20155228 《网络对抗技术》 实验八:Web基础
2017-2018-2 20155228 <网络对抗技术> 实验八:Web基础 1. 实践内容 1.1 Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET ...
- 计算机网络实验八实验报告——应用Packet Tracer 5.0模拟器工具对WLAN进行配置
计算机网络实验八实验报告 一.实验目的 1.熟练使用Packet Tracer 5.0模拟器: 2.应用Packet Tracer 5.0模拟器工具对WLAN进行配置. 二.实验环境 一台PC机. 模 ...
- 实验八 应用层协议Ⅱ-FTP协议分析
实验八 应用层协议Ⅱ-FTP协议分析 一.实验目的 1.掌握FTP协议的实现原理. 2.了解控制通道和数据通道. 二.实验内容 用WareShark追踪ftp连接. 1.三次握手 2.ftp服务器回发 ...
- 2017-2018-2 20155225《网络对抗技术》实验八 Web基础
2017-2018-2 20155225<网络对抗技术>实验八 Web基础 1.Web前端HTML 输入命令apachectl start打开apahce,并使用netstat -aptn ...
- 20155201 网络攻防技术 实验八 Web基础
20155201 网络攻防技术 实验八 Web基础 一.实践内容 Web前端HTML,能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. We ...
随机推荐
- MQTT 遗嘱使用
大部分人应该有这个需求: 我想让我的APP或者上位机或者网页一登录的时候获取设备的状态 在线还是离线 设备端只需要这样设置 注意:MQTT本身有遗嘱设置 所以大家可以设置遗嘱 ,注意哈,发布的主题 ...
- 46、Spark SQL工作原理剖析以及性能优化
一.工作原理剖析 1.图解 二.性能优化 1.设置Shuffle过程中的并行度:spark.sql.shuffle.partitions(SQLContext.setConf()) 2.在Hive数据 ...
- vue-cli 中的 eslint 规则说明
"no-alert": 0,//禁止使用alert confirm prompt "no-array-constructor": 2,//禁止使用数组构造器 & ...
- 白天不懂夜的黑追寻Android规范
有趣有内涵的文章第一时间送达! 喝酒I创作I分享 关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 生活中总有些东 ...
- python实现:判断某一天是那一年中的第几天
方法1:先判断是否是闰年,然后再利用求和,得出某一天是第几天 # 方法1:low版 def func1(year, month, day): # 分别创建平年,闰年的月份天数列表(注意列表下标从0开始 ...
- AOP注解方式ApsectJ开发
AOP注解方式ApsectJ开发 引入配置文件 编写切面类配置 使用注解的AOP对象目标类进行增强 在配置文件中开启以注解形式进行AOP开发 在切面类上添加注解 注解AOP通知类型 @Before前置 ...
- 汇编写的BASE64
汇编写的BASE64 unit Base64; { procedure TForm1.Button1Click(Sender: TObject); var Source, Dest: TStream; ...
- B2C电子商务系统研发——商品SKU分析和设计(一)
一.SKU及相关概念定义 在设计商品SKU之前,首先让我们熟悉一下SKU和相关的一些概念. # 什么是SKU: SKU=Stock Keeping Unit(库存量单位) 同一型号的商品,或者说是同一 ...
- C++多线程下出现内存越界问题总结
工作中遇到这样一个问题,某个多级流水多线程的程序,在压力测试下会偶现segmentation fault11错误,错误出现在运行类函数的地方,而后排查后发现是由于多线程争抢导致类被析构后才走入判断,导 ...
- [转]JRebel 热部署激活教程
原文地址:https://cloud.tencent.com/developer/news/303750 JRebel的官方地址(https://zeroturnaround.com/software ...