7

我有IList<string>一个函数返回(作为变量 lst),我设置然后我

this.dataGridView1.DataSource = lst;

数据网格添加一列标记为长度,然后列出每个字符串的长度。如何让它只列出字符串?

4

2 回答 2

14

您确实需要一个具有字符串属性的对象列表。使用 .NET 3.5,您可以作弊:

.DataSource = list.Select(x=>new {Value = x}).ToList();

否则创建一个虚拟类并手动复制数据...

于 2009-07-09T14:58:34.170 回答
2

这是因为 DataGridViews 显示对象的属性。在这种情况下,列表只有一个属性“长度”,因此它只能显示“长度”(无论数据类型如何)。您需要创建一个包装类来实现您想要的(具有“Text”属性的“MyString”类,然后在您的网格中显示一个列表)。

希望这可以帮助

添加代码示例

 class MyString
    {
        private string _text;
        public string Text
        { get 
             { 
              return _text; 
             }
            set 
            {
                _text = value; 
            }
        }

    }

'在执行表格中

 private List<MyString> foo()
        {
            List<MyString> lst = new List<MyString>();
            MyString one = new MyString();
            MyString two = new MyString();
            one.Text = "Hello";
            two.Text = "Goodbye";
            lst.Add(one);
            lst.Add(two);
            return lst;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource = foo();

        }
于 2009-07-09T15:11:18.450 回答