资源简介
一、 实验要求
(1) 参考系统的写字板功能,编写一个小型的文字编辑工具;
(2) 该文档编辑器,基本功能;
文件操作::新建,打开,保存,退出; //支持rtf文件
编辑操作::复制,剪切,粘贴,全选;
查找与替换: 设计查找(替换)窗口,支持查找(替换)操作 。
格式操作::字体,颜色等;
(3) 附加功能:
MDI多文档使用方法
二、 设计思路
1. 使用TabControl控件模拟多文档的编辑效果。TabControl控件的页(TabPage)是一个容器,通过自定义的MyTabPage可以在该“页”中包含文档编辑器控件RichTextBox来编辑文件。
2. “新建文档”功能:在TabContol控件的使用过程中,添加一页就是新建MyTabPage并添加到该控件中。
3. “打开文档”功能:使用richTextBox.LoadFile();方法打开文件。
4. “保存当前页”功能:使用richTextBox1.SaveFile();方法保存文件。
5. “关闭当前页”功能:通过RichTextBox的Modified属性判断文件内容是否已发生改变。如果文件内容有修改,则提示用户是否保存,如回答Yes, 保存后关闭,否则直接关闭;如果文件内容没有修改,则直接关闭;
6. “查找/替换”功能:使用richTextBox.Find();方法实现。
三、 关键代码
新建:
private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
{
MyTabPage newPage = new MyTabPage();
pagenum = 1;
newPage.Text = "tabPage" pagenum.ToString();
newPage.Parent = tclMain;
tclMain.SelectedTab = newPage; //当前页
newPage.editor.ContextMenuStrip = contextMenuStrip1; //设置右键菜单
}
打开:
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
MyTabPage newPage = new MyTabPage();
newPage.Parent = tclMain;
tclMain.SelectedTab = newPage; //当前页
newPage.editor.ContextMenuStrip = contextMenuStrip1; //设置右键菜单
dlgOpen.Filter = "文本文件(*.txt)|*.txt|富格式文件(*.rtf)|*.rtf|所有文件(*.*)|*.*"; // 指定文件类型选择项
if (dlgOpen.ShowDialog() == DialogResult.OK)
{
newPage.filename = dlgOpen.FileName; //连着路径一起存放
//newPage.filename = openFileDialog.FileName.Substring(openFileDialog.FileName.LastIndexOf("\\") 1);
//只存文件名
if (Path.GetExtension(newPage.filename) == ".rtf")
newPage.editor.LoadFile(newPage.filename, RichTextBoxStreamType.RichText);
else
newPage.editor.LoadFile(newPage.filename, RichTextBoxStreamType.PlainText);
newPage.Text = dlgOpen.FileName.Substring(dlgOpen.FileName.LastIndexOf("\\") 1); //显示文件名
newPage.editor.Modified = false;
}
}
保存:
private void save(MyTabPage tp)
{
if (tp == tclMain.SelectedTab)
{
// 如果文件名为默认名,表示是新文件
if (tp.filename == "NoName")
{
saveAs(tp); //另存为
}
// 否则表示是旧文件
else
{
if (Path.GetExtension(tp.filename) == ".rtf")
tp.editor.SaveFile(tp.filename, RichTextBoxStreamType.RichText);
else
tp.editor.SaveFile(tp.filename, RichTextBoxStreamType.PlainText);
tp.editor.Modified = false;
}
}
}
private void saveAs(MyTabPage tp)
{
SaveFileDialog dlgSave = new SaveFileDialog(); // 动态创建一个文件保存对话框
dlgSave.Title = "保存文本编辑器文件"; // 指定默认的对话框标题
dlgSave.Filter = "文本文件(*.txt)|*.txt|富格式文件(*.rtf)|*.rtf|所有文件(*.*)|*.*";
// 显示保存文件对话框,且用户按下了“确认”按钮
if (dlgSave.ShowDialog() == DialogResult.OK)
{
tp.filename = dlgSave.FileName;
if (Path.GetExtension(tp.filename) == ".rtf")
tp.editor.SaveFile(tp.filename, RichTextBoxStreamType.RichText);
else
tp.editor.SaveFile(tp.filename, RichTextBoxStreamType.PlainText);
tp.Text = tp.filename.Substring(tp.filename.LastIndexOf("\\") 1); //显示文件名
tp.editor.Modified = false;
}
}
查找:
public void find(string strFind)
{
foreach (MyTabPage tp in tclMain.TabPages) //找到当前页
{
if (tp == tclMain.SelectedTab)
{
if (findPostion >= tp.editor.Text.Length)
{
MessageBox.Show("已到文本底部,再次查找将从文本开始处查找", "提示", MessageBoxButtons.OK);
findPostion = 0;
return;
}
findPostion = tp.editor.Find(strFind, findPostion, RichTextBoxFinds.MatchCase);
if(findPostion == -1) //没找到
{
MessageBox.Show("已到文本底部,再次查找将从文本开始处查找", "提示", MessageBoxButtons.OK);
findPostion = 0;
}
else //已经找到
{
tp.editor.Focus();
findPostion = strFind.Length; //下次查找的开始位置在此次找到的字符串后
}
}
}
}
替换:
public void replace(string strReplace)
{
foreach (MyTabPage tp in tclMain.TabPages) //找到当前页
{
if (tp == tclMain.SelectedTab)
{
if (tp.editor.SelectedText.Length != 0) //如果选取了字符串
tp.editor.SelectedText = strReplace; //替换被选字符串
}
}
}
四、 运行效果图
新建:
保存:
打开:
关闭:
查找:
替换:
格式:
颜色:
字体:
居中:
全选、复制、粘贴:
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO; //Path
namespace ex3
{
public partial class Editor : Form
{
public Editor()
{
InitializeComponent();
}
private int pagenum;
int findPostion = 0; //记录查找位置
private void 新建ToolStripMenuItem_Click(object sender EventArgs e)
{
MyTabPage newPage = new MyTabPage();
pagenum += 1;
newPage.Text = “tabPage“ + pagenum.ToString();
newPage.Parent = tclMain;
tclMain.SelectedTab = newPage; //当前页
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 95744 2016-12-13 12:24 Editor\.vs\editor\v14\.suo
文件 982 2016-12-10 12:16 Editor\editor.sln
文件 189 2016-11-10 10:49 Editor\ex3\App.config
文件 140 2016-11-10 16:58 Editor\ex3\bin\Debug\abc.txt
文件 99840 2016-12-11 21:37 Editor\ex3\bin\Debug\ex3.exe
文件 189 2016-11-10 10:49 Editor\ex3\bin\Debug\ex3.exe.config
文件 44544 2016-12-11 21:37 Editor\ex3\bin\Debug\ex3.pdb
文件 22696 2016-12-13 12:16 Editor\ex3\bin\Debug\ex3.vshost.exe
文件 189 2016-11-10 10:49 Editor\ex3\bin\Debug\ex3.vshost.exe.config
文件 490 2016-07-16 19:44 Editor\ex3\bin\Debug\ex3.vshost.exe.manifest
文件 158 2016-12-10 16:52 Editor\ex3\bin\Debug\NoName
文件 13496 2016-12-11 21:37 Editor\ex3\Editor.cs
文件 4353 2016-12-10 20:25 Editor\ex3\editor.csproj
文件 40929 2016-12-10 20:44 Editor\ex3\Editor.Designer.cs
文件 110238 2016-12-10 20:44 Editor\ex3\Editor.resx
文件 1175 2016-12-10 20:44 Editor\ex3\formFindReplace.cs
文件 4972 2016-12-10 20:36 Editor\ex3\formFindReplace.Designer.cs
文件 5817 2016-12-10 20:36 Editor\ex3\formFindReplace.resx
文件 4074 2016-12-11 21:37 Editor\ex3\MyTabPage.cs
文件 1464 2016-11-10 17:11 Editor\ex3\obj\Debug\DesignTimeResolveAssemblyReferences.cache
文件 7264 2016-12-13 12:09 Editor\ex3\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
文件 1869 2016-12-13 12:17 Editor\ex3\obj\Debug\editor.csproj.FileListAbsolute.txt
文件 1139 2016-12-10 20:44 Editor\ex3\obj\Debug\editor.csproj.GenerateResource.Cache
文件 2384 2016-12-10 20:25 Editor\ex3\obj\Debug\editor.csprojResolveAssemblyReference.cache
文件 850 2016-12-10 10:21 Editor\ex3\obj\Debug\ex3.csproj.FileListAbsolute.txt
文件 1012 2016-11-10 17:28 Editor\ex3\obj\Debug\ex3.csproj.GenerateResource.Cache
文件 2384 2016-11-10 12:22 Editor\ex3\obj\Debug\ex3.csprojResolveAssemblyReference.cache
文件 69939 2016-12-10 20:44 Editor\ex3\obj\Debug\ex3.Editor.resources
文件 99840 2016-12-11 21:37 Editor\ex3\obj\Debug\ex3.exe
文件 180 2016-12-10 20:36 Editor\ex3\obj\Debug\ex3.FormFindReplace.resources
............此处省略27个文件信息
相关资源
- Hosts文件管理工具
- C# 读取并编辑window系统的右键菜单
- C#自定义屏保(不断滚动的文字)
- 疯子ftp上传工具源码传送数据到服务
- c# 同时将图片和文字复制到剪贴版 (
- C# 文件编码转换工具(支持UTF-8/UTF-
- Unicode解码、编码工具(附源码)
- c# 自绘饼形图 并显示相关文字(有截
- 编辑
- UU云远程打码工具源码
- MD5值校正工具源码
- 根据文件列表,合并文本文件,保持
- iis6建站工具
- 带Html编辑器CSkin.dll版本
- WeiXin调试工具
- QQ农场辅助工具源码
- C# 在csgl中显示文字
- Be.HexEditor编辑器
- 图像填充文字(垂直显示/水平显示文
- C# 域名whois批量查询工具(检测是否注
- 商城辅助工具源码(支持COD货到付款
- dll文件32位/64位检测工具
- kindeditor编辑器 黏贴图片自动上传插件
- C# 批量给图片加水印工具源码(亲测
- http报文抓取工具源码
- C# 开机清理工具源码
- 批量处理图片打印分辨率(DPI)工具
- C# 简易播放器工具源码(可用于年会
- 批量压缩GIF图片工具源码(基于Gifs
- C# 图形旋转角度 小工具源码
评论
共有 条评论