Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我使用此撤消/重做代码重做时,第一件撤消的事情无法重做_C#_Visual Studio_.net 4.0_Richtextbox_Undo Redo - Fatal编程技术网

C# 当我使用此撤消/重做代码重做时,第一件撤消的事情无法重做

C# 当我使用此撤消/重做代码重做时,第一件撤消的事情无法重做,c#,visual-studio,.net-4.0,richtextbox,undo-redo,C#,Visual Studio,.net 4.0,Richtextbox,Undo Redo,我使用以下代码在我的应用程序中实现撤消/重做: public struct UndoSection { public string Undo; public int Index; } -- -- 通过使用RedoCode()单击按钮来调用它 您能演示如何调用Redo函数吗 据我所知,你漏掉了下面的代码 private void Form1_KeyDown(object sender, KeyEventArgs e) {

我使用以下代码在我的应用程序中实现撤消/重做:

    public struct UndoSection
    {
        public string Undo;
        public int Index;   
}
--

--


通过使用RedoCode()单击按钮来调用它

您能演示如何调用Redo函数吗

据我所知,你漏掉了下面的代码

 private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Modifiers == Keys.None && e.KeyCode == Keys.Delete)
                UndoStack.Push(new UndoSection(richTextBoxPrintCtrl1.SelectionStart, richTextBoxPrintCtrl1.SelectedText));
            else if (e.Control && e.KeyCode == Keys.Z)
            {
                e.Handled = true;
                undo_Click(richTextBoxPrintCtrl1, new EventArgs());
            }
            else if (e.Control && e.KeyCode == Keys.Y)
            {
                e.Handled = true;
                redo_Click(richTextBoxPrintCtrl1, new EventArgs());
            }

请参见编辑。我已经添加了您的按键密码,但似乎没有任何变化。
            Stack<UndoSection> UndoStack = new Stack<UndoSection>();
 private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Modifiers == Keys.None && e.KeyCode == Keys.Delete)
                UndoStack.Push(new UndoSection(richTextBoxPrintCtrl1.SelectionStart, richTextBoxPrintCtrl1.SelectedText));
            else if (e.Control && e.KeyCode == Keys.Z)
            {
                e.Handled = true;
                undo_Click(richTextBoxPrintCtrl1, new EventArgs());
            }
        }

     public string[] RTBRedoUndo;
        public int StackCount = 0;
        public int OldLength = 0;
        public int ChangeToSave = 5;
        public bool IsRedoUndo = false;
    public void RTBTextChanged()
    {
        if (richTextBoxPrintCtrl1.TextLength - OldLength >= ChangeToSave | richTextBoxPrintCtrl1.TextLength - OldLength <= ChangeToSave)
        {
            StackCount += 1;
            RTBRedoUndo[StackCount] = richTextBoxPrintCtrl1.Text;
        }
    }

    public void UndoCode()
    {
        IsRedoUndo = true;
        if (StackCount > 0 && RTBRedoUndo[StackCount - 1] != null)
        {
            StackCount = StackCount - 1;
            richTextBoxPrintCtrl1.Text = RTBRedoUndo[StackCount];
        }
    }

    public void RedoCode()
    {
        if (IsRedoUndo == false && richTextBoxPrintCtrl1.Text.Substring(richTextBoxPrintCtrl1.Text.Length - 1, 1) == " ")

            IsRedoUndo = true;
        if (StackCount > 0 && RTBRedoUndo[StackCount + 1] != null)
        {
            StackCount = StackCount + 1;
            richTextBoxPrintCtrl1.Text = RTBRedoUndo[StackCount];
        }
public void RedoCode()
    {
        if (IsRedoUndo == false && richTextBoxPrintCtrl1.Text.Substring(richTextBoxPrintCtrl1.Text.Length - 1, 1) == " ")

            IsRedoUndo = true;
        if (StackCount > 0 && RTBRedoUndo[StackCount + 1] != null)
        {
            StackCount = StackCount + 1;
            richTextBoxPrintCtrl1.Text = RTBRedoUndo[StackCount];
        }

    }
 private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Modifiers == Keys.None && e.KeyCode == Keys.Delete)
                UndoStack.Push(new UndoSection(richTextBoxPrintCtrl1.SelectionStart, richTextBoxPrintCtrl1.SelectedText));
            else if (e.Control && e.KeyCode == Keys.Z)
            {
                e.Handled = true;
                undo_Click(richTextBoxPrintCtrl1, new EventArgs());
            }
            else if (e.Control && e.KeyCode == Keys.Y)
            {
                e.Handled = true;
                redo_Click(richTextBoxPrintCtrl1, new EventArgs());
            }