多次撤消/重做

时间:2014-04-21 07:45:40

标签: c# undo-redo

我如何进行多次撤消&使用以下代码重做函数?

private void btn_Undo_Click(object sender, EventArgs e) //To Undo previous searched record
    {
        if (_dataSet != null && _dataSet.Tables.Count > 0 && _lastDtTable2 != null)
        {
            _dataSet.Tables.Clear();
            _dataSet.Tables.Add(_lastDtTable2);
            dataGridView1.DataSource = _dataSet.Tables[0];
        }
    }
    private void btn_Redo_Click_2(object sender, EventArgs e)
    {
        if (_dataSet != null && _dataSet.Tables.Count > 0 && _lastDtTable2 != null)
        {
            _dataSet.Tables.Add();
            dataGridView1.DataSource = _dataSet.Tables[0];
        }

我只能撤消一次

1 个答案:

答案 0 :(得分:0)

要维护多堆撤消,您需要使用一个结构(例如,堆栈是一个很好的结构),并保留用户的历史记录。

每个动作都是"推动"进入堆栈。

每当他按下"返回",你就会简单地弹出" pop"旧的国家,用它做你想做的事。