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

在VS2010中实现C#富文本框添加右键菜单,第1张

软糖来回答罗

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

        }

满意请采纳,谢谢。

首先你要确定GetMenu()函数是否返回了正确的菜单指针,很有可能这个是野指针或者空指针,导致后面调用出错;

注释后需要确定重新编译了再运行,如果还出现一样的结果,只能证明是下面的代码 有问题,或者是你模仿的有问题,或者是他原来的代码有问题,计算机是不会骗人的。

这个需要你添加断点跟踪看才能准确的分析和定位问题,也是一种基本的能力


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11605977.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存