我需要将一些数据显示到表中,但我没有得到类/对象在紧凑框架中这样做。 该表不必执行任何操作,只需显示数据即可。 我试过像这样的datagrid:
DataGrid table = new DataGrid();
table.Location = new Point(13,190);
table.Size = new Size(221,100);
List<int> list = new List<int>();
list.Add(5);
list.Add(7);
list.Add(9);
table.DataSource = list;
this.Controls.Add(table);
但是这产生了一个似乎是空的数据网格(一列,四行,一行有一个箭头)。
答案 0 :(得分:1)
你得到“空”网格的原因是:
您使用int
作为列表类型参数,但int
无法显示。
将列表类型参数替换为具有公共属性的其他类型,您就可以获得所需的内容。
在这里,试试这个:
DataGrid table = new DataGrid();
table.Location = new Point(0, 0);
table.Size = new Size(221, 100);
List<KeyValuePair<object, object>> list = new List<KeyValuePair<object, object>>();
list.Add(new KeyValuePair<object, object>("asdfasdf", 3685745));
list.Add(new KeyValuePair<object, object>("sdfgsdfgsd", 54));
list.Add(new KeyValuePair<object, object>("xcvbxcvbxcvb", 341234));
list.Add(new KeyValuePair<object, object>("56785678567", 56));
table.DataSource = list;
this.Controls.Add(table);
如果需要显示整数或字符串等数据,可以使用linq执行此操作:
table.DataSource = list.Select(item=>new {item}).ToList();
答案 1 :(得分:0)
而不是List<int>
,请尝试使用对象列表,其中Object是您编写的用于存储数据的类。
以下是一个例子:
public class MyData {
public MyData() {
Date = DateTime.MinValue;
}
public int ID { get; set; }
public string Text { get; set; }
public DateTime Date { get; set; }
public override ToString() {
return string.Format("{0}: {1}", ID, Text);
}
}
现在,使用MyData
类创建您的列表并填写...无论您拥有什么:
var list = new List<MyData>();
list.Add(new MyData() { ID = 5, Text = "5", new DateTime(2012, 5, 1) });
list.Add(new MyData() { ID = 7, Text = "7", new DateTime(2012, 7, 1) });
list.Add(new MyData() { ID = 9, Text = "9", new DateTime(2012, 9, 1) });
table.DataSource = list;
而且,仅供参考:对于 DataGrid 实例,单词table
不是一个好的选择。这里的人不会知道你在说什么。