如何检索列表框中的每一项

本文关键字:一项 列表 何检索 检索 | 更新日期: 2023-09-27 18:18:57

我是c#新手,尽管我去年学了四分之一的Java。我明天要交作业,所以我的问题是。我做了一个小程序样本,希望能得到我想要的。我想知道,我究竟如何查看listBox并说,例如,如果足球项目被选中,做一件事,但如果其他项目被选中,做另一件事?我会上传一段代码,不做它应该做的事情,你们都可以叫我愚蠢,然后给我答案。

    private void submitButton_Click(object sender, EventArgs e)
    {
        string best;
        best = namesListBox.SelectedItem.ToString();
        if ((string)namesListBox.SelectedItem == "Soccer") 
        {
            MessageBox.Show("Fried chicken, don't let that bird die in vain.");
        }
        else
        {
            MessageBox.Show("Long long ago, in the land of the Hobbit...");
        }
    }
    private void exitButton_Click(object sender, EventArgs e)
    {
        Close();
    }
}

}

每次这段代码运行时,我总是得到Long, Long ago....那不是我想看到的。任何帮助都会很感激,我要放弃这个项目了。这不是实际的程序,那个要复杂得多,我只是做了这个来演示我的问题…提前感谢

如何检索列表框中的每一项

yury,

看起来您正在将所选项格式化为字符串。我觉得这可能就是问题所在。

你到底在用'best'这个字符串做什么?您定义了它,但在您的示例中没有使用它。

这是你要找的吗?尝试使用ToString()方法,并修剪它,以便空白不会使代码出错:

string selectedItem = namesListBox.SelectedItem.ToString().Trim();
if (selectedItem == "Soccer")
    MessageBox.Show("Soccer is selected.");
else
    MessageBox.Show("NOT SELECTED");

可能是大小写错误?如果您不想担心大写或小写,请尝试将.ToLower()附加到字符串:

string selectedItem = namesListBox.SelectedItem.ToString().Trim().ToLower();
if (selectedItem == "Soccer".ToLower())
    // Handle code accordingly.
else
    // Handle accordingly.

你也可以搜索你的ListBox的字符串,并找出它在哪里。然后确定用户是否选择了该特定项目:

int selIndex = namesListBox.FindString("Soccer");

这将返回第一个包含单词"Soccer"的项的位置的从零开始的索引。

现在处理选定的索引:

if (namesListBox.SelectedIndex != -1 &&
    namesListBox.SelectedIndex == selIndex)
    MessageBox.Show("First item containing '"Soccer'" is selected.");
else
    MessageBox.Show("First item containing '"Soccer'" is not selected.");

也很有可能你正在使用一个ListView对象而不是一个实际的ListBox。如果是这种情况,您将不得不采取不同的方法。这个例子仍然使用ListBox name:

// This assumes that you cannot select multiple items, and that you
// only have one column in your ListView.
string selectedItem = namesListBox.SelectedItems[0].SubItems[0].Text;
if (selectedItem.Trim() == "Soccer") // Continue as before...

这在你的项目中工作吗?

编辑:等待。在评估之前,您是否试图将所选项目更改为"最佳"?

如果是的话,这样做:

int selIndex = namesListBox.SelectedIndex;
namesListBox.Items.RemoveAt(selIndex);
namesListBox.Items.Insert(selIndex, "best");
编辑:

确保包含不处理选择的代码:

// Will not execute block of code if nothing is selected.
if (namesListBox.SelectedIndex == -1)
{
    MessageBox.Show("No item is selected.");
    return;
}

我假设您正在使用WPF,并且您正在像这样使用ListBox:

<ListBox x:Name="lstGames">
        <ListBoxItem Content="Soccor"/>
        <ListBoxItem Content="Cricket"/>
    </ListBox>

将此best = namesListBox.SelectedItem.ToString();替换为

best = ((ListBoxItem)namesListBox.SelectedItem).Content.ToString();

,其他人也一样。

因为如果你使用的是ListBox的itemssource属性,并且绑定了只有字符串的列表,那么你现在的代码肯定会为你工作,如果你选中了大写/小写。

如果你使用一些项目,如游戏对象具有多个属性,那么你的代码将无法工作,如果你告诉你如何将你的列表框绑定到一个集合对象。

我唯一要找的是如何写一个if语句,你写的这部分代码工作得很好。我想可能是我有空白,或者是我想多了。但无论如何,我的问题解决了。非常感谢。

string selectedItem = namesListBox.SelectedItem.ToString().Trim();
if (selectedItem == "Soccer")
    MessageBox.Show("Soccer is selected.");
else
    MessageBox.Show("NOT SELECTED");