ICSharpCode.TextEditor 控件源自开源项目 SharpDevelop,是一款非常不错的.NET代码编辑控件,内置了多种高亮语言支持,对中文支持友好。
为了方便使用,我在其控件上增加语言属性,可以直接在属性栏设置语言,同时示例中加入代码右键菜单功能,包括剪切、复制、粘贴、删除、全选。



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;
using ICSharpCode.TextEditor;
namespace Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void 复制ToolStripMenuItem_Click(object sender, EventArgs e)
{
string str = textEditorControl1.ActiveTextAreaControl.SelectionManager.SelectedText;
if (str == "") return;
Clipboard.SetText(str);
}
private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e)
{
string str = Clipboard.GetText();
textEditorControl1.ActiveTextAreaControl.TextArea.InsertString(str);
if (textEditorControl1.ActiveTextAreaControl.SelectionManager.HasSomethingSelected)
textEditorControl1.ActiveTextAreaControl.SelectionManager.RemoveSelectedText();
}
private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
{
string str = textEditorControl1.ActiveTextAreaControl.SelectionManager.SelectedText;
if (str == "") return;
Clipboard.SetText(str);
textEditorControl1.ActiveTextAreaControl.SelectionManager.RemoveSelectedText();
}
private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
{
string str = textEditorControl1.ActiveTextAreaControl.SelectionManager.SelectedText;
if (str != "") textEditorControl1.ActiveTextAreaControl.SelectionManager.RemoveSelectedText();
}
private void 全选ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.textEditorControl1.ActiveTextAreaControl.SelectionManager.SetSelection(
textEditorControl1.Document.OffsetToPosition(0),
textEditorControl1.Document.OffsetToPosition(textEditorControl1.Document.TextLength));
}
}
}
示例代码下载
https://download.csdn.net/download/fxziyu/10883752