首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从DataGridView填充checkedListBox

从DataGridView填充checkedListBox
EN

Stack Overflow用户
提问于 2017-06-18 17:51:02
回答 3查看 458关注 0票数 0

我有一个checkedListBox1,我想将它的所有项转换为DataGridView,我有以下代码

代码语言:javascript
复制
 string[] ar = new string[60];
        for (int j = 0; j < checkedListBox1.Items.Count; j++)
        {
            ar[j] = checkedListBox1.Items[j].ToString();
        }
        dataGridView2.DataSource = ar;

但是dataGridView2中填充了条目的长度,而不是条目本身,有谁能帮上忙呢?

EN

回答 3

Stack Overflow用户

发布于 2017-06-18 23:02:20

这些代码块可能会给出一个想法(都是为我工作的)。CheckedListBox项返回集合。它来自于IList接口,所以如果我们使用列表项作为数据源,数据视图就解决了这个问题。我使用泛型List作为Sample的一个额外类。当我们使用字符串数组时,datagridview显示每个项的长度。在这里,过度的ToString返回原始值。

代码语言:javascript
复制
class Sample
{
   public string Value { get; set; }

   public override string ToString()
   {
       return Value;
   }
}

在形式班:

代码语言:javascript
复制
private void button1_Click(object sender, EventArgs e)
{
  CheckedListBox.ObjectCollection col = chk.Items;
  List<Sample> list = new List<Sample>();
  foreach (var item in col)
  {
      list.Add(new Sample { Value = item.ToString() });
  }

  dgw.DataSource = list;

 }
票数 0
EN

Stack Overflow用户

发布于 2017-06-18 23:16:30

这个简单的DataTable代码似乎有效..。

代码语言:javascript
复制
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
for (int j = 0; j < checkedListBox1.Items.Count; j++) {
  dt.Rows.Add(checkedListBox1.Items[j].ToString());
}
dataGridView1.DataSource = dt;
票数 0
EN

Stack Overflow用户

发布于 2017-06-19 01:01:39

因为DataGridView查找包含对象的属性。对于字符串,只有一个属性长度。所以,您需要这样一个字符串的包装器。

代码语言:javascript
复制
string[] ar = new string[60];
for (int j = 0; j < checkedListBox1.Items.Count; j++)
{
    ar[j] = checkedListBox1.Items[j].ToString();
}
dataGridView1.DataSource = ar.Select(x => new { Value = x }).ToList();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44617872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档