获取列表框中所选项目的值作为字符串

Posted

技术标签:

【中文标题】获取列表框中所选项目的值作为字符串【英文标题】:Getting value of selected item in list box as string 【发布时间】:2013-02-06 19:49:52 【问题描述】:

我正在尝试使用下面的代码获取列表框中所选项目的值,但它总是返回空字符串。

DataSet ds = searchforPrice(Convert.ToString(listBox1.SelectedItem));

这里我试图将所选项目的值作为字符串传递给方法 searchforPrice 以从数据库中检索数据集。

如何将所选项目的值检索为字符串?

我正在从组合框向列表框添加项目,组合框又从数据库中加载项目。

 listBox1.Items.Add(comboBox2.Text);

任何人都有答案..

【问题讨论】:

请贴出加载列表框的代码。 【参考方案1】:

如果要检索项目的显示文本,请使用GetItemText 方法:

string text = listBox1.GetItemText(listBox1.SelectedItem);

【讨论】:

@AmritSharma,你检查过SelectedItem 不为空吗? @ThomasLevesque 查看上面的截图 @ThomasLevesque,是的,selectedItem 值为空 @BaruchAtta GetItemText 绝对是exists(继承自ListControl)。我的猜测是您使用的不是 Windows 窗体,而是 WPF 或 UWP,它们具有不同的 ListBox 控件。 @BaruchAtta 你看我的评论了吗?您没有使用我的答案适用的相同 UI 框架。问题是关于 Windows 窗体(标签中的winforms),这个答案适用于 Windows 窗体,它肯定有 GetItemText 方法。如果您使用的是 WPF 或 UWP 等其他 UI 框架,则答案不适用。您使用 VS2017 的事实并没有说明您使用的是哪个 UI 框架,因为存在多个。【参考方案2】:

如果您在应用程序中使用 ListBox,并且想要返回 ListBox 的选定值并将其显示在 Label 或其他任何东西中,请使用此代码,它将对您有所帮助

 private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    
         label1.Text  = listBox1.SelectedItem.ToString();
    

【讨论】:

已经尝试过您建议的代码,它输出的字符串是: System.Windows.Controls.ListViewItem: AndThenTheActualString - 如何摆脱冗长的 system.windows - 没人想要看到了吗? @BKSpureon 答案适用于 ListBox。您的代码使用的是 ListView,这就是为什么那里有“System.Windows.Controls.ListViewItem”。【参考方案3】:

要检索 à listbox 中所有选定项的值,您可以在 DataRowView 中转换选定项,然后选择数据所在的列:

foreach(object element in listbox.SelectedItems) 
    DataRowView row = (DataRowView)element;
    MessageBox.Show(row[0]);

【讨论】:

【参考方案4】:
string textValue = ((ListBoxItem)listBox1.SelectedItem).Content.ToString();

【讨论】:

这样使用as 不是一个好主意。它看起来更干净,但它的格式不正确。 as 用于检查对象是否为某种类型。你为这项工作使用了错误的工具。最好投正确((ListBoxItem)listBox1.SelectedItem) 感谢 PC Luddite 的解释,会更正它。【参考方案5】:

如果您想从列表框中检索您的值 你应该试试这个:

String itemSelected = numberListBox.GetItemText(numberListBox.SelectedItem);

【讨论】:

GetItemText 方法不可用...请帮助...我正在开发 windows phone 应用程序【参考方案6】:

在文件列表框中获取 FullName(完整路径)列表(Thomas Levesque 回答修改,感谢 Thomas):

...
        string tmpStr = "";
        foreach (var item in listBoxFiles.SelectedItems)
        
            tmpStr += listBoxFiles.GetItemText(item) + "\n";
        
        MessageBox.Show(tmpStr);
...

【讨论】:

【参考方案7】:

你可以使用这个来获取选中的 ListItme Name ::

String selectedItem = ((ListBoxItem)ListBox.SelectedItem).Name.ToString();

确保您的每个 ListBoxItem 都有一个 Name 属性

【讨论】:

【参考方案8】:

详细说明 Pir Fahim 先前的回答,他是对的,但我使用的是 selectedItem.Text(唯一能让它对我有用的方法)

使用 SelectedIndexChanged() 事件将数据存储在某处。 就我而言,我通常填写一个自定义类,例如:

class myItem 
    string name get; set;
    string price get; set;
    string desc get; set;


private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

     myItem selected_item = new myItem();
     selected_item.name  = listBox1.SelectedItem.Text;
     Retrieve (selected_item.name);

然后您可以从“myItems”列表中检索其余数据..

myItem Retrieve (string wanted_item) 
    foreach (myItem item in my_items_list) 
        if (item.name == wanted_item) 
               // This is the selected item
               return item; 
        
    
    return null;

【讨论】:

【参考方案9】:

正确的解决方案似乎是:

string text = ((ListBoxItem)ListBox1.SelectedItem).Content.ToString();

请务必使用 .Content 而不是 .Name

【讨论】:

【参考方案10】:

如果你想检索从列表框中选择的项目,这里是代码...

String SelectedItem = listBox1.SelectedItem.Value;

【讨论】:

listBox1.SelectedItem.Value; // listBox1.SelectedItem 和的 .Value 部分似乎没有出现在我的 IDE 中。任何指针?

以上是关于获取列表框中所选项目的值作为字符串的主要内容,如果未能解决你的问题,请参考以下文章

Csharp:根据组合框中的值加载选中的项目列表

在c#MVC4中获取列表框中所选值的总和

如何使用 jquery 从 asp.net 列表框中仅获取当前选定的选项

组合框中的默认选择列表值 - LWC

VBA从Excel中的电子表格中的列表框中获取值

如何在熊猫数据框中使用列表作为值?