就是跟vs  ctrl+z +y一样功能的代码

解决方案 »

  1.   

    如果是文本框,发送WM_UNDO和WM_REDO就可以了。更复杂的功能,你需要的无非是3个要素,一个是当操作改变的时候能捕获到,一个是可以把操作变化(或者原来的状态)放入一个堆栈。最后是所谓撤销就是恢复到栈顶的那个状态。如果你要重做,还需要另一个堆栈,重做就是撤销的撤销。
      

  2.   

    你是否全面使用了 ICommand 接口了呢?也就是说,你程序中的所有需要标识的操作,都是 ICommand,而不再是随意写的方法。先做到这一步,也就是随时可以Redo,那么才会有Undo的概念。
      

  3.   

    没有啊,我用的是WINFROM,新手还不太清楚。ICommand 是什么?
      

  4.   

    public Form1()
            {
                InitializeComponent();
            }
    是这个吗?要是这个的话就一直用
      

  5.   

    但是redo和UNDO实现的效果跟预期的差别有点大,
    private void toolStripButton1_Click(object sender, EventArgs e)
            {
                bool bCanUndo = rtb内容.CanUndo;
                if (bCanUndo == true)
                {
                    rtb内容.Undo();
                    rtb内容.ClearUndo();
                }
            }        private void toolStripButton2_Click(object sender, EventArgs e)
            {
                bool bRedo = rtb内容.CanRedo;
                if (bRedo == true)
                {
                    rtb内容.Redo();
                }
            }
    这时我写的撤销与重做