簡體   English   中英

如何從CheckedListBox獲取選中項的字符串值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM