這一定很容易,但我被卡住了。 我有一個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_應用程序嗎? –