手把手教你用C#编写一个简单的文本编辑器


首先,打开你的开发工具Microsoft visual studio 2005。文件——》新建项目——》项目类型选择visualc#,模板选择windows 应用程序,到此我们已经创建好一个window窗体了!

接着修改窗体的属性,窗体名字修改为EditorForm,窗体的text属性修改为你要的命名。在工具箱了选择MenuStrip控件如图,把菜单拖到窗体去!


然后选择插入标准项


插入完菜单之后,再从工具箱里拖一个RichTextBox到菜单下面,然后选择停靠父容器,最后一个简单的编辑器的界面出来了!如图:

-----------------------------------------------------------------------------------------------------------------------------------------

好了,界面我们已经设计好了,现在我们来实现功能了!首先从工具箱里面拖一个叫做openFileDialog的控件,这是一个用于打开文件的对话框来的,把这个拖到窗体,然后点击一下OpenFileDialog选定此控件,设置Filter属性默认文本(*.txt)|*.txt|富文本文件(*.rtf)|*.rtf 。当然以后功能扩充后,可以打开别的文件,例如设置Filter的属性为括号里的(数据库文件(*.dat)|*.dat|图像文件(*jpg;*bmp;*gif)|*jpg;*bmp;*gif|文本文件(*.txt)|*.txt|所有文件(*.*)|*.*)。(注意,次数是用于打开文件对话框对要打开的文件进行筛选的,我们这里只是做简单的文本编译器,所以支持的格式分别是.txt 和.rtf格式的文本),最后双击菜单的打开菜单出现


private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)
{
//确定用户选择了文件
if (this.openFileDialog.ShowDialog() == DialogResult.OK)
{
//得到用户选择的文件路径和文件名
path = this.openFileDialog.FileName;
//读取文件内容
this.LoadFile();

}
}

private void LoadFile()
{
if (this.openFileDialog.FilterIndex == 1)
{
//纯文本文件
this.richTextBox1.LoadFile(path, RichTextBoxStreamType.PlainText);
}
if (this.openFileDialog.FilterIndex == 2)
{
this.richTextBox1.LoadFile(path, RichTextBoxStreamType.RichText);
}
}

我们要在里面写代码实现把PC机上的文件打开到我们的编辑器中进行简单的文字编译了,但是在写代码前,我们要定义一个全局变量,用于记录是否文件是新建的,还是打开来编辑的,我们要把这个变量定义为 string path = null ;

附上所有代码

刚刚学习不久,功能没有完全的实现

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SimpleEditor
{
public partial class EditorForm : Form
{
string path = null;

string isSaved = "n";

int initLenglt = 0;

public EditorForm(string path)
{
this.path = path;

InitializeComponent();
}

private void 新建NToolStripMenuItem_Click(object sender, EventArgs e)
{

if (this.richTextBox1.TextLength > 0 && (isSaved.Equals("n")))
{

if (MessageBox.Show("文件没有保存是否新建文件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
this.richTextBox1.Clear();
this.Text = "简单的编辑器";
this.initLenglt = richTextBox1.TextLength;
}

}

else
{
this.richTextBox1.Clear();
this.Text = "简单的编辑器";
this.initLenglt = richTextBox1.TextLength;
}
}

private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)
{
//确定用户选择了文件
if (this.openFileDialog.ShowDialog() == DialogResult.OK)
{
//得到用户选择的文件路径和文件名
path = this.openFileDialog.FileName;

//读取文件内容

this.OpenFile();

}

}


private void OpenFile()
{
try
{
string extName = this.path.Substring(this.path.LastIndexOf("."));

if (extName.ToLower().Equals(".txt"))
{
//纯文本文件
this.richTextBox1.LoadFile(path, RichTextBoxStreamType.PlainText);

}

if (extName.ToLower().Equals(".rtf"))
{
this.richTextBox1.LoadFile(path, RichTextBoxStreamType.RichText);
}

this.Text = "文本编辑器" + path;


this.isSaved = "y";
}

catch (Exception ex)
{
MessageBox.Show("请选择合适文件,打开失败");
}
}

private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)
{
if(string.IsNullOrEmpty(this.path))
{

this.saveFileDialog1.Title = "保存为";
if (this.saveFileDialog1.ShowDialog() == DialogResult.OK)
{
this.path = this.saveFileDialog1.FileName;

SaveFile();



}

}

else
{

string extNanme=path.Substring(this.path.LastIndexOf("."));
if (extNanme.ToLower().Equals(".txt"))
{
this.richTextBox1.SaveFile(this.path, RichTextBoxStreamType.PlainText);

}

if(extNanme.ToLower().Equals(".rtf"))
{
this.richTextBox1.SaveFile(this.path, RichTextBoxStreamType.RichText);
}
}

this.initLenglt = richTextBox1.TextLength;

}

private void SaveFile()
{
try
{
if (this.saveFileDialog1.FilterIndex == 1)
{
//纯文本文件
this.richTextBox1.SaveFile(path, RichTextBoxStreamType.PlainText);

}

if (this.saveFileDialog1.FilterIndex == 2)
{
this.richTextBox1.SaveFile(path, RichTextBoxStreamType.RichText);
}

this.Text = "文本编辑器" + path;


this.initLenglt = richTextBox1.TextLength;


this.isSaved = "y";
}

catch (Exception ex)
{ }



}

private void 另存为AToolStripMenuItem_Click(object sender, EventArgs e)
{

if (this.saveFileDialog1.ShowDialog() == DialogResult.OK)
{
this.path = this.saveFileDialog1.FileName;

SaveFile();

}
}

private void EditorForm_Load(object sender, EventArgs e)
{
this.剪切TToolStripMenuItem.Enabled = false;
this.复制CToolStripMenuItem.Enabled = false;

if(!string.IsNullOrEmpty(this.path))
{
this.OpenFile();
}
}

private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
string extName = this.path.Substring(this.path.LastIndexOf("."));

if (extName.ToLower().Equals(".txt"))
{
this.SettxtFont();
}

if (extName.ToLower().Equals(".rtf"))
{
this.SetRichtextFont();
}
}

catch(Exception ex)
{
}
}

private void SettxtFont()
{
if (this.fontDialog1.ShowDialog() == DialogResult.OK)
{
Font font = this.fontDialog1.Font;

this.richTextBox1.Font = font;
}
}

private void SetRichtextFont()
{
if (this.fontDialog1.ShowDialog() == DialogResult.OK)
{
Font font = this.fontDialog1.Font;

this.richTextBox1.SelectionFont = font;
}
}

private void 字体颜色ToolStripMenuItem_Click(object sender, EventArgs e)
{
string extName = this.path.Substring(this.path.LastIndexOf("."));

if (extName.ToLower().Equals(".rtf"))
{
if (this.colorDialog1.ShowDialog() == DialogResult.OK)
{
Color color = this.colorDialog1.Color;

this.richTextBox1.SelectionColor = color;
}
}
}

private void 剪切TToolStripMenuItem_Click(object sender, EventArgs e)
{
if(richTextBox1.SelectionLength>0)
{
this.richTextBox1.Cut();
}
}

private void 粘贴PToolStripMenuItem_Click(object sender, EventArgs e)
{
this.richTextBox1.Paste();
}

private void 复制CToolStripMenuItem_Click(object sender, EventArgs e)
{
if (richTextBox1.SelectionLength > 0)
{
this.richTextBox1.Copy();
}
}

private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
if (richTextBox1.SelectionLength > 0)
{
this.剪切TToolStripMenuItem.Enabled = true;

this.复制CToolStripMenuItem.Enabled = true;
}

else
{
this.剪切TToolStripMenuItem.Enabled = false;
this.复制CToolStripMenuItem.Enabled = false;
}
}

private void 编辑EToolStripMenuItem_Click(object sender, EventArgs e)
{

}

private void 全选AToolStripMenuItem_Click(object sender, EventArgs e)
{
this.richTextBox1.SelectedText.ToString();
}

private void 退出XToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}

private void EditorForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (this.richTextBox1.TextLength > this.initLenglt)
{ 
if (MessageBox.Show("文件没有保存是否退出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
{
e.Cancel = true;
}
}




}

private void 关于AToolStripMenuItem_Click(object sender, EventArgs e)
{
AboutBox aboutbox = new AboutBox();
aboutbox.ShowDialog();
}

private void 撤消UToolStripMenuItem_Click(object sender, EventArgs e)
{
this.richTextBox1.Undo();
}


}
}


  • 16
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
通达信是一款广受中国投资者喜爱的股票行情分析软件,而编写通达信的插件可以帮助用户更方便地进行股票分析和决策。下面是一个图文手把手教你如何使用VC 2010编写通达信缠论插件的步骤。 第一步:准备工作 1. 确保已经安装好Visual Studio 2010和通达信软件。 2. 打开Visual Studio 2010,创建一个新的C++项目。 第二步:导入相关文件 1. 在项目中右键击“资源文件”,选择“添加->现有项”。 2. 导航到通达信的安装目录,找到插件相关的头文件和库文件,选择并导入到项目中。 第三步:编写代码 1. 在项目中创建一个新的C++源文件,命名为“plugin.cpp”。 2. 在“plugin.cpp”中编写你的插件代码,可以包括初始化、数据处理、绘图等功能。 第四步:编译和调试 1. 点击Visual Studio 2010的“生成->生成解决方案”菜,编译你的插件代码。 2. 将编译生成的插件文件(例如“plugin.dll”)复制到通达信的插件目录中。 3. 启动通达信软件,并在菜栏中找到你的插件,选择并运行它。 第五步:测试和验证 1. 在通达信软件中打开一个股票行情页面,确保你的插件正确运行。 2. 测试你的插件是否能够按照你的预期显示或处理数据。 3. 如果发现错误或需要改进,返回Visual Studio 2010,修改代码后重新编译和调试。 通过以上步骤,你就可以使用VC 2010编写通达信缠论插件了。当然,这只是一个简单的教程示例,实际的插件编写可能涉及更复杂的功能和算法。希望这个回答能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值