是否可以使用原始类型的Collection(例如List<long>
)作为DataGridView的DataSource?
经过半心半意的努力使其成功后,我放弃了并创建了一个简单的结构,因此我可以为DataGridViewColumn提供一个PropertyName。但是现在我必须在处理UI时打包我的值,为我的应用程序的其余部分取消它们(从而否定数据绑定的好处),并在我的结构中实现IComparable和IEquatable以支持List排序和搜索(一个简单的足够的任务,结构本身的存在是非常杂乱的)。
为了给UI小部件提供值列表,似乎需要花费大量的开销和杂乱。当然有一种更简单的方法......
答案 0 :(得分:1)
如果您要向用户显示要显示的数字列表,请考虑使用ComboBox
。这样您就可以将DataSource
设置为List<long>
。
但是,如果您确实需要DataGridView
,则可以将List<long>
更改为List<Long?>
,现在可以将网格视图列绑定到有界的Value
属性名单。这种方法可以为您节省自定义结构,但它仍然是一种折衷的解决方案。
答案 1 :(得分:1)
@João的解决方案很好,如果你能控制你的代码。
如果您不控制进入的列表,可以将其包装在linq表达式中,以便命名实体绑定到。
List<int> list = new List<int> {1, 1, 1};
var q = from item in list select new { bindingname = item };
dataGridView1.DataSource = q.ToList();