展开全部
软糖来回答罗
先在窗体上添加控件 richTextBox1 和右键菜单 contextMenuStrip1
在 contextMenuStrip1 中添加两个子菜单项
撤销ToolStripMenuItem
重做ToolStripMenuItem
然后在窗体class中添加以下代码
private List<string> 撤销list = new List<string>();
private List<string> 重做list = new List<string>();
private int 最大撤销次数 = -1;
private bool 是撤销记录 = false;
private string 临时文本;
private void Form1_Load(object sender, EventArgs e) {
richTextBox1.ContextMenuStrip = contextMenuStrip1;
}
public void 设置最大撤销次数(int _undoCount) {
//校正最大撤销/重做次数
最大撤销次数 = _undoCount + 1;
//上一句的原因
撤销list.Add("");
}
public void 记录更改(string str) {
临时文本 = str;
if (!是撤销记录)
{
撤销list.Add(str);
if (最大撤销次数 > 0 && 撤销list.Count > 最大撤销次数)
{
撤销list.RemoveAt(0);
}
} else
{
是撤销记录 = false;
}
}
public void 撤销() {
if (撤销list.Count <= 1)
return;
是撤销记录 = true;
重做list.Add(撤销list[撤销list.Count - 1]);
撤销list.RemoveAt(撤销list.Count - 1);
临时文本 = 撤销list[撤销list.Count - 1];
}
public void 重做() {
if (重做list.Count <= 0)
return;
临时文本 = 重做list[重做list.Count - 1];
重做list.RemoveAt(重做list.Count - 1);
}
private void richTextBox1_TextChanged(object sender, EventArgs e) {
记录更改(richTextBox1.Text);
}
private void 撤销ToolStripMenuItem_Click(object sender, EventArgs e) {
撤销();
richTextBox1.Text = 临时文本;
}
private void 重做ToolStripMenuItem_Click(object sender, EventArgs e) {
重做();
richTextBox1.Text = 临时文本;
}
满意请采纳,谢谢。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询