如何检索列表框中的每一项
本文关键字:一项 列表 何检索 检索 | 更新日期: 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");