C# 如何检索列表框C中的每个项目#

C# 如何检索列表框C中的每个项目#,c#,listbox,C#,Listbox,我是C#新手,尽管去年我确实学了四分之一的Java。我明天要交作业,所以我的问题是。我做了一个小程序示例,希望能得到我想要的。我想知道,我该如何看待列表框,并说,例如,如果选择了项目足球,做一件事,但如果选择了任何其他内容,做另一件事?我会上传一段代码,但它并没有做它应该做的事情,你们都可以叫我笨蛋,然后给我答案 private void submitButton_Click(object sender, EventArgs e) { string best;

我是C#新手,尽管去年我确实学了四分之一的Java。我明天要交作业,所以我的问题是。我做了一个小程序示例,希望能得到我想要的。我想知道,我该如何看待列表框,并说,例如,如果选择了项目足球,做一件事,但如果选择了任何其他内容,做另一件事?我会上传一段代码,但它并没有做它应该做的事情,你们都可以叫我笨蛋,然后给我答案

    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();
    }
}
}


每次运行这段代码时,我总是在很久很久以前。。。。这不是我想看到的。任何帮助都将不胜感激,我将放弃这个计划。这不是实际的程序,那一个要复杂得多,我只是做这个来演示我的问题。。。提前感谢

我假设您使用的是WPF,并且您使用的列表框如下所示:

<ListBox x:Name="lstGames">
        <ListBoxItem Content="Soccor"/>
        <ListBoxItem Content="Cricket"/>
    </ListBox>
因此,其他人也是如此

因为如果您使用的是ListBox的itemssource属性和绑定(比如只包含字符串的列表),那么如果您选中了大写/小写,那么您当前的代码肯定会适合您

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

Yuriy

看起来您正在将所选项目大小写为字符串。我觉得这可能就是问题所在

您使用字符串“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.
您还可以在列表框中搜索字符串并找出它的位置。然后确定用户是否已选择该特定项目:

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。如果是这种情况,您将不得不采取不同的方法。此示例仍然使用您的列表框名称:

这对你的项目有效吗

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

如果是,请按如下方式操作:

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;
}

我唯一想要的是如何编写if语句,而您编写的这部分代码工作得非常好。我猜是我把空格扔掉了,或者是我想得太多了。但无论如何,我的问题解决了。多谢各位

string selectedItem = namesListBox.SelectedItem.ToString().Trim();

if (selectedItem == "Soccer")
    MessageBox.Show("Soccer is selected.");
else
    MessageBox.Show("NOT SELECTED");

为什么不简单地尝试将SelectedItem属性设置为MessageBox?然后你看到了什么?好的第一步是调用
MessageBox.Show(namesListBox.SelectedItem),或者——甚至更好——在代码中放一个断点,看看值是什么。这将非常有启发性。C#没有列表框。Windows窗体和WPF都有列表框(类似但不同!)。请标记适当的UI框架以及C#。您还可以在click方法中设置断点。这允许您在运行时检查变量。请看:@crashmstr他显然是新来的——也许只是指出语言和UI框架之间有区别。(经过编辑——我最初把你的评论解释为恶作剧,但我想我是跳了枪——道歉)
// Will not execute block of code if nothing is selected.
if (namesListBox.SelectedIndex == -1)
{
    MessageBox.Show("No item is selected.");
    return;
}
string selectedItem = namesListBox.SelectedItem.ToString().Trim();

if (selectedItem == "Soccer")
    MessageBox.Show("Soccer is selected.");
else
    MessageBox.Show("NOT SELECTED");