C# 将Datagridview绑定到StringCollection
是否可以将Datagridview绑定到StringCollection? 我试着用一种方式做这件事C# 将Datagridview绑定到StringCollection,c#,winforms,datagridview,.net-2.0,C#,Winforms,Datagridview,.net 2.0,是否可以将Datagridview绑定到StringCollection? 我试着用一种方式做这件事 StringCollection dict = Settings.Default.MyDict; BindingSource bs = new BindingSource(); bs.DataSource = dict; this.DGV.DataSource = bs; Bud而不是collection datagridview的items显示项目的长度。问题
StringCollection dict = Settings.Default.MyDict;
BindingSource bs = new BindingSource();
bs.DataSource = dict;
this.DGV.DataSource = bs;
Bud而不是collection datagridview的items显示项目的长度。问题是,当它绑定到
StringCollection
时,底层类型是string
,因此它会从typestring
中拉出它找到的第一个属性以显示。这个属性就是长度
您可以做的是将您的StringCollection
包装在自己创建的类中,并公开将显示字符串的文本的属性
字符串的包装类
:
public class MyString
{
private string _myString;
public string Text
{
get { return _myString; }
set { _myString = value; }
}
public MyString(string str)
{
_myString = str;
}
}
您的代码变成:
StringCollection dict = Settings.Default.MyDict;
// put your string in the wrapper
List<MyString> anotherdict = new List<MyString>();
foreach (string str in dict)
{
anotherdict.Add(new MyString(str));
}
BindingSource bs = new BindingSource();
// bind to the new wrapper class
bs.DataSource = anotherdict;
this.DGV.DataSource = bs;
StringCollection dict=Settings.Default.MyDict;
//把你的绳子放在包装袋里
List anotherdict=新列表();
foreach(dict中的字符串str)
{
添加(新MyString(str));
}
BindingSource bs=新的BindingSource();
//绑定到新的包装器类
bs.DataSource=另一个dict;
this.DGV.DataSource=bs;
its的可能重复项不是重复项,its for.net2.0是否可以通过更改DataMember属性而不使用包装器执行此操作?@Ask,DataMember
采用属性名称。如果你看一看,你会发现它只有两个属性,没有一个属性可以得到字符串的文本。因此,您无法将DataMember
设置为可以获取文本的任何内容。唯一的解决方法是提供自己的类,该类提供自己的属性来公开字符串。您是否可以使用列表
,或绑定列表
,或可观察集合
等来代替字符串集合
?谢谢您的评论。默认情况下,您只能在属性编辑器中选择StringCollection,这就是为什么我坚持使用它的原因。