无法显示堆栈中的最后一项pop()

时间:2013-01-18 08:52:51

标签: c# winforms stack pop

我在按钮上实现后置函数..当点击时移动到堆栈中的前一个链接....问题是如果它在堆栈中有一个元素pop()它给出了堆栈空的错误。 ..

 private void Backward_Click(object sender, EventArgs e)
{
try
{
if (simpleStack.Count != 0)
{
simpleStack.Pop();
string open = simpleStack.Pop();

PopulateListView(open);

complicatedStack.Push(open);

}

else if (simpleStack.Count == 0)
{
Backward.Enabled = false;

}

当我有多次点击时,它会回到上一个选中的项目。但是没有显示最后一个....我在simpleStack中传递字符串....可以正文telll我缺少什么

2 个答案:

答案 0 :(得分:4)

看看你的代码:

simpleStack.Pop();
string open = simpleStack.Pop();

你弹出两次,忽略了第一个结果。为什么要这么做?我怀疑你可以删除第一个Pop电话。

另请注意,您的else子句不需要检查simpleStack.Count == 0 - 它必须是,否则您将不会评估else子句。 (除非你有多个线程做的事情当然 - 这不是一个好主意。)

答案 1 :(得分:0)

试试这个 -

private void Backward_Click(object sender, EventArgs e)
    {
        try
        {
            if (simpleStack.Count != 0)
            {
                //simpleStack.Pop();    // Remove this line
                string open = simpleStack.Pop();

                PopulateListView(open);

                complicatedStack.Push(open);

            }
            else if (simpleStack.Count == 0)
            {
                Backward.Enabled = false;
            }
        }
    }