c#CheckedListbox值

c#CheckedListbox值,c#,checkedlistbox,C#,Checkedlistbox,当我想将值放入从checkedlistbox中选择的数组中时。然后说: messagebox.show(值[0]) 它的意思是:System.Data.DataRowView 这是我当前的代码: string[] itemArr = new string[clbTables.CheckedItems.Count]; int counter = 0; foreach (object item in this.clbTables.CheckedItem

当我想将值放入从checkedlistbox中选择的数组中时。然后说:

messagebox.show(值[0])

它的意思是:System.Data.DataRowView

这是我当前的代码:

        string[] itemArr = new string[clbTables.CheckedItems.Count];
        int counter = 0;
        foreach (object item in this.clbTables.CheckedItems)
        {
            string temp = Convert.ToString(item);
            itemArr[counter] = temp;
            counter++;
        }
        MetroMessageBox.Show(this, itemArr[0].ToString());
我在这里做错了什么>

编辑::

clbTables.DataSource = sqlDisplayContent.connectDataTable("SELECT ('Tafelnr: '+ CONVERT(varchar,tafelnr)+' Zitplaatsen: '+ CONVERT(varchar,zitPlaatsen)) AS dispValue,tafelnr  FROM tabel");
clbTables.DisplayMember = "dispValue";
clbTables.ValueMember = "tafelnr";



class sqlDisplayContent
        {
            public static DataTable connectDataTable(string query)
            {
                SqlCommand comm= sqlCrud.returnSqlCommand(query);
                SqlDataAdapter sda = new SqlDataAdapter(comm);
                DataTable dt = new DataTable();
                sda.Fill(dt);
                return dt;
            }
        }

Thankss

我认为您的values[]数组不正确。请参考MSDN上的示例

问题在于:

Convert.ToString(item);
将只调用对象的ToString()方法并存储该方法,在本例中,该方法将为您提供对象的类型。在本例中,类型为System.Data.DataRowView。我建议您使用以下方法访问所需行中的特定字段:

((DataRowView)item).Row["FieldName"].ToString();
相反。您需要将“FieldName”替换为您想要的列的任何名称。此外,可以使用int索引而不是字符串引用。当然,如果需要访问多个字段,可以通过简单的字符串连接来实现。问题是您需要访问所需的特定字段。不是当前所在的整行

我希望这有帮助

一些参考资料:


您传入的是对象,而不是对象的文本(这似乎是您希望代码执行的操作)。

我没有看到
messagebox.show(值[0])在您的代码中…您将整个对象作为项返回(而不是对象文本值)。这里有一个很好的示例:项是System.Data.DataRowView,而ToString()是System.Data.DataRowView。您应该将此.clbTables.CheckedItems中的
对象项更改为此.clbTables.CheckedItems中的
变量项。CheckedItems
好的。那是我的错。我的印象是checkedItems将是一个行的集合。我做了更多的研究,没有说
item.Row[“FieldName”].ToString()
,而是尝试
((DataRowView)item.Row.item[“FieldName”].ToString()。您需要将“FieldName”替换为您想要的列的任何名称。此外,还可以使用int索引。参考资料:,我为这些问题道歉。请尝试
((DataRowView)项).Row[“FieldName”].ToString()。如果这不起作用,我将删除我的帖子,以避免用任何错误的答案打扰你。非常欢迎你。我很高兴我们解决了这个问题。当我这么做的时候,它告诉我:“其他信息:无法将'System.Data.DataRowView'类型的对象强制转换为'System.Windows.Forms.CheckBox'。@Jamie,噢!好的,你能更新你的代码来告诉我们CheckedListBox在DataGrid中的实现位置吗?@Jamie,我在这里找到了一些代码,这样你就可以使用它来获取包含文本的对象。我不确定如何获取文本,但通过VisualStudio它应该足够简单,可以向您展示。谢谢,但这就是问题所在。。。我无法从对象中获取文本。它的意思是:“System.Data.DataRowView”。好的,那么在每个数据行中都有一个checkedlistbox?如果是这种情况,则需要循环每一行,循环checkedlistbox中的每个选中项,然后将每个复选框的文本添加到字符串数组中。这可能是遗漏的一步@杰米
string temp = ((CheckBox)item).Text;