如何检查列表框中是否选择了某个项目? 所以我有一个按钮删除,但我只想在列表框中选择一个项目时执行该按钮。我在C#后面使用asp.net代码。我更喜欢这种验证是否发生在服务器端。
欢呼声..
答案 0 :(得分:1)
在按钮单击的回调中,只需检查列表框的选定索引是否大于或等于零。
protected void removeButton_Click( object sender, EventArgs e )
{
if (listBox.SelectedIndex >= 0)
{
listBox.Items.RemoveAt( listBox.SelectedIndex );
}
}
答案 1 :(得分:1)
实际上,SelectedIndex是从零开始的,所以你的检查必须是:
if(listBox.SelectedIndex> = 0) ...
答案 2 :(得分:1)
要删除多个项目,您需要反向解析这些项目。
protected void removeButton_Click(object sender, EventArgs e)
{
for (int i = listBox.Items.Count - 1; i >= 0; i--)
listBox.Items.RemoveAt(i);
}
如果你照常解析那么结果将是非常意外的。 例如: 如果删除项目0,则项目1将成为新项目0。 如果您现在尝试删除您认为的第1项, 你实际上会删除你所看到的第2项。
答案 3 :(得分:0)
您可能希望根据您的概率设置采用早期突破方法。事实是 ListBox.SelectedIndex如果没有选择任何内容将返回-1 。
所以借用一些tvanfosson的按钮事件处理程序代码。
protected void removeButton_Click( object sender, EventArgs e )
{
if (listBox.SelectedIndex < 0) { return; }
// do whatever you wish to here to remove the list item
}
答案 4 :(得分:0)
要从集合中删除项目,您需要向后循环。
for (int i=lbSrc.Items.Count - 1, i>=0, i--)
{
//code to check the selected state and remove the item
}
答案 5 :(得分:-1)
for (int i = 0; i < lbSrc.Items.Count; i++)
{
if (lbSrc.Items[i].Selected == true)
{
lbSrc.Items.RemoveAt(lbSrc.SelectedIndex);
}
}
这就是我想出来的。