在C#中,根据条件删除包含对象List<>的ListBox的最后一项

3

我有一个ListBox,绑定了一个对象列表。在ListBox_SelectionChanged事件中,我正在检查所选项目的索引是否是List<>的最后一项。如果selectedIndex是最后一项,则要删除该项并调用我的Web服务以添加更多项到列表中。但如果selectedIndex不是最后一项,则要导航到另一页。我的问题是,如果selectedTndex是最后一项,则它会删除最后一项,但它再次返回到相同的“if”条件,我在那里检查selectedIndex是否是最后一项。所以,它不是调用我的服务,而是导航到下一页。有人能告诉我为什么它再次调用if()条件以及如何处理它吗?


1
请发布一些你正在尝试做的代码。 - Anchit
1
我认为当您从ListBox控件中删除项目时,它会自动将焦点放在先前的项目上并触发SelectionChanged事件。因此,当您需要删除项目时,可以取消订阅此事件,然后再次订阅。 - acrilige
2个回答

1

我认为当您从列表框中删除项目时(ListBox控件),它会自动选择上一个项目,从而触发SelectionChanged事件。因此,在执行以下伪代码之前,您可以取消订阅此事件:

bool isLast = ... ;
if (isLast)
{
   listBox.SelectionChanged -= OnSelectionChanged;
   Remove(item);
   listBox.SelectionChanged += OnSelectionChanged;
}

因此,当您删除项目时,此事件将不会再次触发。另外,您可能希望清除选择:

listBox.SelectedIndex = -1;

0
也许如果你清空列表框并重新加载它会有帮助。

1
影响性能...不是一个好主意,他需要做的是向我们展示他正在使用的代码。 - TimothyP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接