这一定很容易,但我被卡住了。 我有一个X项目的列表框。每个项目都有一个文本说明(出现在列表框中)及其值(数值)。 我希望能够使用项目的索引号获取项目的value属性。按索引获取列表框项目的值
回答
这个工作对我来说:
ListBox x = new ListBox();
x.Items.Add(new ListItem("Hello", "1"));
x.Items.Add(new ListItem("Bye", "2"));
Console.Write(x.Items[0].Value);
据我所知,'ListBox.Items'的类型是'System.Windows.Forms.ListBox.ObjectCollection',这意味着'ListBox.Items [index]'是一个没有Value属性的对象! –
这是WebForms的答案,因为他指的是“设置文本和值”,这使我可以假设WebForms,而不是WinForms。 – DaveShaw
假设你想的第一个项目的价值。
ListBox list = new ListBox();
Console.Write(list.Items[0].Value);
我正在使用绑定带有一个SqlDataReader的ingSource,以上都不适用于我。
质疑微软:为什么这个工作:
? lst.SelectedValue
但是,这不?
? lst.Items[80].Value
,我觉得我必须回去到BindingSource对象,将它转换为System.Data.Common.DbDataRecord,然后参照其列名:
? ((System.Data.Common.DbDataRecord)_bsBlocks[80])["BlockKey"]
现在,这只是荒谬。
或者我猜我可以遍历Items集合,选择每个项目,然后得到SelectedValue。但是我不应该这样做,而且它是一个kludge –
在' ListBox的Items集合是类型对象,它没有'Value'属性,该项目可能是'DataRowView',一个复杂对象或主要类型。该值应该使用'ValueMember'属性来计算,与'SelectedValue'工作方式相同。 –
这将是
String MyStr = ListBox.items[5].ToString();
项目可能是'DataRowView'或复杂对象或其他类型。一个项目的基础价值应该基于'ValueMember'来计算。 –
在这里我无法看到即使是在这个问题的一个正确答案(中的WinForms标签)和真奇怪,如此频繁的问题。
ListBox
控件的项目可能是DataRowView
,复杂对象,匿名类型,主要类型和其他类型。一个项目的基础价值应根据ValueMember
计算。
ListBox
控件有一个GetItemText
它可以帮助您获取项目文本,而不管您添加为项目的对象的类型。它真的需要这样的GetItemValue
方法。
GetItemValue扩展方法
我们可以创建GetItemValue
extension method获得项目值,就像GetItemText
:
using System;
using System.Windows.Forms;
using System.ComponentModel;
public static class ListControlExtensions
{
public static object GetItemValue(this ListControl list, object item)
{
if (item == null)
throw new ArgumentNullException("item");
if (string.IsNullOrEmpty(list.ValueMember))
return item;
var property = TypeDescriptor.GetProperties(item)[list.ValueMember];
if (property == null)
throw new ArgumentException(
string.Format("item doesn't contain '{0}' property or column.",
list.ValueMember));
return property.GetValue(item);
}
}
使用上面的方法,你不必担心ListBox
并设置将返回一个项目的预期Value
。它适用于List<T>
,Array
,ArrayList
,DataTable
,匿名类型列表,主要类型列表以及您可以用作数据源的所有其他列表。下面是使用的例子:
//Gets underlying value at index 2 based on settings
this.listBox1.GetItemValue(this.listBox1.Items[2]);
因为我们创造了GetItemValue
方法扩展方法,当你想使用的方法,不要忘记包括你把类的命名空间
该方法也适用于ComboBox
和CheckedListBox
。
只是试试这个 列表框是你的清单,玉是至极的指数值为0的veriable将被分配
string yu = listBox1.Items[0].ToString();
MessageBox.Show(yu);
- 1. 按索引获取列表项目
- 2. 从按钮中获取列表框项目索引单击
- 3. 获取Redis列表项目索引
- 4. 按索引获取列表值
- 5. 如何获取列表框中某个项目的索引
- 6. 如何获取列表框中所选项目的索引?
- 7. 从列表框项目获取值
- 8. 通过附加属性获取列表框项目索引
- 9. 如何从列表框中获取项目索引
- 10. 按索引查找列表项目
- 11. 获取嵌套列表项的索引
- 12. C#DataTable,按行/列索引获取值
- 13. 获得项目的索引列表框在C#
- 14. 从列表框中检索值项目
- 15. 比较列表框项目和基于索引的ListView项目
- 16. 如何获取列表框中单击按钮的索引
- 17. 如何获取列表框中最近选择的项目的索引
- 18. 如何获取动态添加到列表框的项目的索引
- 19. 如何找到带有项目值的列表框项目索引?
- 20. 从绑定列表中获取已删除项目的索引
- 21. 获取数组列表中项目的索引;
- 22. 获取列表视图中点击项目的索引
- 23. 通过列表和数组中的索引获取struct项目
- 24. JavaFX列表视图 - 获取当前选定项目的索引?
- 25. 如何获取C#中列表中新增项目的索引?
- 26. 是否有可能从列表中的项目获取索引?
- 27. 试图获取列表中某个项目的索引
- 28. 获取的蟒蛇列表项前面的索引值洗牌
- 29. Python:按索引弹出列表列表中的项目
- 30. 使用Silverlight获取列表框中多个选定项目的索引
WPF中,的WinForms,Silverlight的或ASP.NET? –
添加一些标签,详细说明您正在使用的内容,如Daniel Hilgarth上面所述。 –
你在使用_windows forms_应用程序吗? –