用C#编写记事本首先要引用与文件读写有关的命名空间using System.IO;
记事本的撤销,复制,粘贴,剪切,删除,字体,颜色等实现起来比较简单,只要几句代码:
private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (textBox1.SelectionLength != 0)
{
textBox1.Cut();
}
}
private void 复制CToolStripMenuItem_Click(object sender, EventArgs e)
{
if (textBox1.SelectionLength != 0)
{
textBox1.Copy();
}
}
private void 粘贴PToolStripMenuItem_Click(object sender, EventArgs e)
{
if(Clipboard.GetText().ToString() != "") //剪贴板里有文本
textBox1.Paste();
}
}
private void 撤销ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (textBox1.CanUndo == true) //文本可以撤销
{
textBox1.Undo();
textBox1.ClearUndo(); //消除最近的撤销信息
}
}
private void 全选ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (textBox1.Text != string.Empty)
{
textBox1.SelectAll();
}
}
private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (textBox1.SelectedText != string.Empty)
{
textBox1.SelectedText = string.Empty;
}
}
private void 时间日期ToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox1.Text =textBox1.Text + DateTime.Now.ToString();
}
private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (fontDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Font = fontDialog1.Font;
}
}
private void 颜色ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.ForeColor = colorDialog1.Color;
}
}
private void 自动换行ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (自动换行ToolStripMenuItem.Checked == true)//如果选中了自动换行
{
textBox1.WordWrap = true; //文本就可以换行(前提是有水平垂直滚动条)
}
else
{
textBox1.WordWrap = false;
}
}
private void 编辑EToolStripMenuItem_DropDownOpened(object sender, EventArgs e) //当单击编辑打开时,判断各项能不能使用
{
if (textBox1.Modified == false)
{
撤销ToolStripMenuItem.Enabled = false;
}
else
{
撤销ToolStripMenuItem.Enabled = true;
}
if (textBox1.SelectedText == "")
{
剪切ToolStripMenuItem.Enabled = false;
复制CToolStripMenuItem.Enabled = false;
删除ToolStripMenuItem.Enabled = false;
}
else
{
剪切ToolStripMenuItem.Enabled = true;
复制CToolStripMenuItem.Enabled = true;
删除ToolStripMenuItem.Enabled = true;
}
if (textBox1.Text == "")
{
查找ToolStripMenuItem.Enabled = false;
替换ToolStripMenuItem.Enabled = false;
}
else
{
查找ToolStripMenuItem.Enabled = true;
替换ToolStripMenuItem.Enabled = true;
}
if (Clipboard.GetText().ToString() == "")
{
粘贴PToolStripMenuItem.Enabled = false;
}
else
{
粘贴PToolStripMenuItem.Enabled = true;
}
}
private void 另存为AToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.saveFileDialog1.ShowDialog() == DialogResult.OK)
{
StreamWriter writer = new StreamWriter(saveFileDialog1.FileName, true, System.Text.Encoding.Default);
writer.Write(textBox1.Text);
writer.Close();
textBox1.Modified = false;
}
}//另存为直接打开保存对话框,创建流写入对象(其构造函数参数一是保存路径及文件名,二是是否覆盖原文件,三是一本系统默认的字符编码保存),用流写入对象的write方法(要被写入保存的文本),最后关闭流写入对象。将文本的是否变动设为false,这样再关闭或保存时不会提示要求保存了。
private void 打开OToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
this.Text = openFileDialog1.SafeFileName + "-记事本"; //safeFileName为文件名不加路径
StreamReader reader = new StreamReader(openFileDialog1.FileName,System.Text.Encoding.Default);
textBox1.Text = reader.ReadToEnd();
this.Filename = openFileDialog1.FileName; //给公共字符串字段赋值用于保存时判断文件名是否存在
reader.Close();
}
}//打开创建的流读取对象,与流写入对象差不多。其中Filename是在类下面声明的值为""的字符串公共变量,在打开文本时就被文件路径及名称赋值,用于在以后保存文件时自动保存,而不是打开保存对话框保存。
private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.Filename ==string.Empty) //判断文件是否存在
{
//不存在就打开对话框保存,把用户单击对话框按钮时返回的值赋给枚举类的DialogResult变量result。
DialogResult result = saveFileDialog1.ShowDialog();
如果result值为DialogResult.Cancel,说明用户单击了取消按钮,则什么也不处理.
if (result == DialogResult.Cancel)
{
textBox1.Text = textBox1.Text;
}
else
{
StreamWriter writer = new StreamWriter(saveFileDialog1.FileName, true, ASCIIEncoding.Default);
writer.Write(textBox1.Text);
writer.Close();
textBox1.Modified = false;
}
}
else
{
StreamWriter writer = new StreamWriter(this.Filename, true, ASCIIEncoding.Default);
writer.Write(textBox1.Text);
writer.Close();
textBox1.Modified = false;
}
}
//新建是保存跟另存为的结合体
private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (textBox1.Modified==true)
{
DialogResult result = MessageBox.Show("文本发生了改变,要保存吗?", "注意", MessageBoxButtons.YesNoCancel);
if (result ==DialogResult.Yes)
{
if (this.Filename == "")
{
DialogResult bresult = saveFileDialog1.ShowDialog();
if (bresult == DialogResult.Cancel)
{
textBox1.Text = textBox1.Text;
}
else
{
saveFileDialog1.ShowDialog();
StreamWriter writer = new StreamWriter(saveFileDialog1.FileName, true, ASCIIEncoding.Default);
writer.Write(textBox1.Text);
writer.Close();
textBox1.Modified = false;
}
}
else
{
StreamWriter writer = new StreamWriter(this.Filename, true, ASCIIEncoding.Default);
writer.Write(textBox1.Text);
writer.Close();
textBox1.Modified = false;
}
}
else if (result == DialogResult.No)
{
textBox1.Clear();
}
else
{
textBox1.Text=textBox1.Text;
}
}
else
{
textBox1.Clear();
}
}
给记事本的菜单栏里的功能加快捷键(属性shortcutkeys)
一下是查找替换的代码form5为查找替换窗口,form3为记事本窗口
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 数据库编程基础
{
public partial class Form5 : Form
{
public string chazhaowenben; //接受来自记事本里的文本
public int index;
public int lastindex;
public int guangbiaowenzhi;
public string jishibenwenben;
public Form5()
{
InitializeComponent();
}
private void btchazhao_Click(object sender, EventArgs e)
{
Form3 form3 = (Form3)this.Owner;
jishibenwenben = form3.str;
chazhaowenben = chazhao.Text;
if (xiangqian.Checked == true)
{
if (xufendaxiaoxie.Checked == true)
{
index = jishibenwenben.IndexOf(chazhaowenben,form3.guangbiao /*guangbiaowenzhi*/);
}
else
{
index = jishibenwenben.IndexOf(chazhaowenben, form3.guangbiao /*guangbiaowenzhi*/, StringComparison.CurrentCultureIgnoreCase);
}
if (index == -1)
{
MessageBox.Show(string.Format("查不到/"{0}/"或已经到文件尾", chazhaowenben));
}
else
{
form3.textBox1.Select(index, chazhaowenben.Length);
form3.textBox1.Focus();
form3.guangbiao /*guangbiaowenzhi*/ = index + chazhaowenben.Length;
}
}
else
{
if (xufendaxiaoxie.Checked == true)
{
lastindex = jishibenwenben.LastIndexOf(chazhaowenben, form3.guangbiao /*guangbiaowenzhi*/);
}
else
{
lastindex = jishibenwenben.LastIndexOf(chazhaowenben, form3.guangbiao /*guangbiaowenzhi*/, StringComparison.CurrentCultureIgnoreCase);
}
if (lastindex == -1)
{
MessageBox.Show(string.Format("查不到/"{0}/"或已经到文件头", chazhaowenben));
}
else
{
form3.textBox1.Select(lastindex, chazhaowenben.Length);
form3.textBox1.Focus();
form3.guangbiao/*guangbiaowenzhi*/ = lastindex - 1;
if (form3.guangbiao < 0)
{
form3.guangbiao = lastindex-1;
MessageBox.Show(string.Format("查不到/"{0}/"或已经到文件头", chazhaowenben));
}
}
}
}
private void chazhao_TextChanged(object sender, EventArgs e)
{
if (this.chazhao.Text == "")
{
btchazhao.Enabled = false;
bttihuan.Enabled = false;
}
else
{
btchazhao.Enabled = true;
bttihuan.Enabled = true;
}
}
private void Form5_Load(object sender, EventArgs e)
{
this.label4.Text = "0";
if (this.chazhao.Text == "")
{
btchazhao.Enabled = false;
bttihuan.Enabled = false;
}
else
{
btchazhao.Enabled = true;
bttihuan.Enabled = true;
}
}
private void btquxiao_Click(object sender, EventArgs e)
{
this.Close();
}
private void button1_Click(object sender, EventArgs e)
{
Form3 form3 = (Form3)this.Owner;
//guangbiaowenzhi = form3.guangbiao;
//this.label4.Text = guangbiaowenzhi.ToString();
this.label4.Text =Convert.ToString(form3.guangbiao);
}
private void bttihuan_Click(object sender, EventArgs e)
{
Form3 form3 = (Form3)this.Owner;
form3.textBox1.SelectedText = this.tihuan.Text;
form3.textBox1.Modified = true;
}
}
}
只有查找替换必须的代码
public partial class Form3 : Form
{
private string Filename="";
public string str; //用于存储记事本里的文本
public int guangbiao; //用于存储光标位置
private void 查找替换ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form5 form5 = new Form5();
form5.Owner = this;
str = this.textBox1.Text;
//guangbiao = this.textBox1.SelectionStart;
//form5.guangbiaowenzhi = this.textBox1.SelectionStart;
form5.Show();
}
private void textBox1_Click(object sender, EventArgs e)
{
// Form5 form5 = new Form5();
// form5.Owner = this;
str = this.textBox1.Text;
//guangbiao = this.textBox1.SelectionStart;
// form5.guangbiaowenzhi = this.textBox1.SelectionStart;
this.guangbiao = this.textBox1.SelectionStart;
}