我想创建一个if语句,用于识别从特定列表框中删除了哪个字符串。我以为我可以做一个类似于下面的if声明,并让它工作,但它告诉我它有无效的争论 - 如果有人可以指导我会赞赏
private void button2_Click(object sender, EventArgs e)
{
listBox2.Items.RemoveAt(listBox2.SelectedIndex);
if(listBox2.Items.RemoveAt(listBox2.SelectedItems.ToString().Equals("Test")))
{
picturebox.Image = null;
}
}
答案 0 :(得分:3)
您需要在删除之前检查SelectedItem
:
private void button2_Click(object sender, EventArgs e)
{
if (listBox2.SelectedIndex != -1)
{
if (listBox2.SelectedItem.ToString().Equals("Test")))
picturebox.Image = null;
listBox2.Items.RemoveAt(listBox2.SelectedIndex);
}
}
我还添加了一项检查以确保实际选择了某个项目(否则会出现错误)。
答案 1 :(得分:1)
您的问题是您正在调用ListBox.Items.RemoveAt(int index)并传入一个布尔值:listBox2.SelectedItems.ToString().Equals("Test"))
。
此外,您首先删除该项目,然后再次调用RemoveAt
,这实际上将删除一个不同的项目(现在该索引处的任何内容),或者如果您已经外出则抛出异常您的ListBox集合的边界。
您应首先检查所选项目是否等于“测试”,然后从ListBox
中删除该项目,如下所示:
private void button2_Click(object sender, EventArgs e)
{
// SelectedIndex returns -1 if nothing is selected
if(listBox2.SelectedIndex != -1)
{
if( listBox2.SelectedItem.ToString().Equals("Test") )
{
picturebox.Image = null;
}
listBox2.Items.RemoveAt(listBox2.SelectedIndex);
}
}
答案 2 :(得分:0)
您应该执行以下操作:
String deletedString = listBox2.Items.ElementAt(listBox2.SelectedIndex).ToString();
listBox2.Items.RemoveAt(listBox2.SelectedIndex);
if(listBox2.Items.RemoveAt(deletedString == "Test"))
{
picturebox.Image = null;
}
它可能无法编译(检查Items是否具有SelectedItem属性)。