Проблема заключается в том, что при привязке к StringCollection
базовый тип - string
, поэтому он вытаскивает первое свойство, которое он находит, из типа string
для отображения. Это свойство - Length.
Что вы можете сделать, это обернуть свой StringCollection
в свой собственный класс и выставить свойство, которое отобразит текст string
.
обертка класс для string
:
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;
Возможный дубликат http://stackoverflow.com/questions/1104341/net-c-sharp-binding -iliststring-to-a-datagridview – Markissimo
его не дубликат, его для .net2.0 – Habib