在VS2010中实现C#富文本框添加右键菜单 5

实现右键弹出下图这种,C#语言!... 实现右键弹出下图这种,C#语言! 展开
 我来答
魔法软糖™
2019-04-23 · TA获得超过837个赞
知道小有建树答主
回答量:822
采纳率:94%
帮助的人:147万
展开全部

软糖来回答罗

先在窗体上添加控件 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 = 临时文本;
        }

满意请采纳,谢谢。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式