我在按钮上实现后置函数..当点击时移动到堆栈中的前一个链接....问题是如果它在堆栈中有一个元素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我缺少什么
答案 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;
}
}
}