【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 ...
随机推荐
- 一篇来自hasura graphql-engine 百万级别live query 的实践
转自:https://github.com/hasura/graphql-engine/blob/master/architecture/live-queries.md Scaling to 1 mi ...
- C# VS 调试 动态加载的 DLL
原文:https://www.cnblogs.com/DasonKwok/p/10510218.html 在这篇文章的底部,有提供示例的Demo,可以参考一下哦,拿来直接就可以运行. 说明: 编译类库 ...
- 【JZOJ6217】【20190614】最大面积
题意 平面上有\(n\)个点\(A_i\),\(q\)次询问,每次给出一个点\(P\),求: \[ \sum_{i=L}^{R} 2S_{\triangle OPA_i} \] 最大值,其中$S_{\ ...
- mysql mod() 获取余数
mysql> ,); +-----------+ | mod(,) | +-----------+ | | +-----------+ row in set (0.00 sec)
- kms windows激活
Microsoft KMS Activation Usage Start a Command Prompt as an Administrator. Windows slmgr.vbs -upk sl ...
- rust 函数的使用
fn main() { println!("Hello, world!"); another_function(2,3); let y ={ let x =3; //表达式的结尾没 ...
- 作业——11 分布式并行计算MapReduce
作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.用自己的话阐明Hadoop平台上HDFS和MapRedu ...
- semi-join子查询优化 -- Duplicate Weedout策略
duplicate weedout是执行semi-join子查询的一种策略. 将semi-join作为一个常规的inner join.然后使用一个临时表,将重复的记录排除. 假设,你有一个查询,你在寻 ...
- Xamarin图表开发基础教程(4)OxyPlot框架
Xamarin图表开发基础教程(4)OxyPlot框架 XamaminAndroid中绘制线图OxyPlotAndroidDemo [示例1-1:OxyPlotAndroidDemo]下面实现线图的绘 ...
- Gson字符串编码,字符串转换成图片保存,二进制转换成图片保存
import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.File; import ...