早!
我有list<string>
转换为BindingList<string>
,如下所示。然后绑定到datagridview
,以便我可以使用此列表中的适当值填充它。
但是,不是显示字符串本身,而是填充字符串的长度。我以前从未使用过datagrids,所以任何帮助都会受到赞赏!
在此先感谢,我已附上以下相关代码部分:
DataGridViewCell cell = new DataGridViewTextBoxCell();
DataGridViewTextBoxColumn colExisting = new DataGridViewTextBoxColumn()
{
CellTemplate = cell,
Name = "Template",
HeaderText = "Existing Template",
};
findReplaceGrid.Columns.Add(colExisting);
var bTemplatesInFiles = new System.ComponentModel.BindingList<string>(templatesInSelection);
findReplaceGrid.DataSource = bTemplatesInFiles;
编辑:
templatesInSelection
定义如下:
public static System.Collections.Generic.List<string> templatesInSelection;
并实例化:
templatesInSelection = new System.Collections.Generic.List<string>();
答案 0 :(得分:1)
BindingList
是为复杂对象绑定而设计的。
如果您尝试仅绑定字符串,它将枚举构建字符串的字符,并仅显示Count
- 属性。
一个可能的解决方案是这个(丑陋但有效):
<强> WrapperClass 强>
public class StringValue {
public StringValue(string s) {
this._value = s;
}
public string Text {
get {
return this._value;
}
set {
this._value = value;
}
}
private string _value;
}
<强>用法强>
var l = new List<StringValue>();
l.Add(new StringValue("Hello"));
l.Add(new StringValue("beautiful"));
l.Add(new StringValue("World"));
var bTemplatesInFiles = new BindingList<StringValue>(l);
this.dataGridView1.DataSource = bTemplatesInFiles;
希望这有帮助!
修改强>
一种更简单的方法(如你所愿)
首先,以某种方式添加列(Designer或Code)
然后做:
var l = new List<string>();
l.Add("Hello");
l.Add("beautiful");
l.Add("World");
foreach (var s in l)
{
this.dataGridView1.Rows.Add(s);
}