[英]How can I get the string value of a checked item from a CheckedListBox?
我有以下代碼嘗試從CheckedListBox提取顯示值:
CheckedListBox.CheckedItemCollection selectedUnits = checkedListBoxUnits.CheckedItems;
_selectedUnit = selectedUnits[0].ToString();
...但是它不起作用-“ _selectedUnit”的值不是“應該是platypus ”,而是“ System.Data.DataRowView ”。
如何從這個復雜的對象中哄騙字符串值?
我不確定user2946329想要看到什么bzg。 我的CheckedListBox,但這是它的填充方式:
private void PopulateUnits()
{
using (SqlConnection con = new SqlConnection(ReportRunnerConstsAndUtils.CPSConnStr))
{
using (SqlCommand cmd = new SqlCommand(ReportRunnerConstsAndUtils.SelectUnitsQuery, con))
{
cmd.CommandType = CommandType.Text;
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
sda.Fill(dt);
((ListBox)checkedListBoxUnits).DataSource = dt;
((ListBox)checkedListBoxUnits).DisplayMember = "Unit";
((ListBox)checkedListBoxUnits).ValueMember = "Unit";
}
}
}
}
讓我知道是否有任何可以幫助您的東西。
應該是這樣的:
DataRowView dr = checkedListBoxUnits.CheckedItems[0] as DataRowView;
string Name = dr["Unit"].ToString();
根據獲得的字符串( "System.Data.DataRowView"
),可以使用帶有數據源的CheckListBox
。 如果是這樣的話,在CheckedItems
您實際上會得到DataRowViews
..因此是字符串,因為它的ToString()返回類名。 您將需要通過DataRowView
通過列名或索引訪問數據。
_selectedUnit = ((DataRowView)selectedUnits[0])["Name"].ToString();
關鍵是在訪問項目之前先對其進行類型轉換...
將user2946329的答案與Resharper的貢獻相結合,我最終使用的代碼是:
String _selectedUnit;
. . .
DataRowView dr = checkedListBoxUnits.CheckedItems[0] as DataRowView;
if (dr != null) _selectedUnit = dr["Unit"].ToString();
(Resharper抱怨可能存在null引用問題,因此在最后一行添加了“ if(dr!= null)”爵士樂。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.