Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataGridView绑定到对象';s";ToString";财产_C#_Winforms_Data Binding_Visual Studio 2013_Datagridview - Fatal编程技术网

C# DataGridView绑定到对象';s";ToString";财产

C# DataGridView绑定到对象';s";ToString";财产,c#,winforms,data-binding,visual-studio-2013,datagridview,C#,Winforms,Data Binding,Visual Studio 2013,Datagridview,我正在将对象列表绑定到Winform DataGridView。这很好,对象上的每个属性都有一列。现在,我已经覆盖了基于属性输出文本的对象上的“ToString”。现在我想更改我的DataGridView,使其具有一个绑定到对象的“ToString”属性的列。这是可能的,因为到目前为止我还没有找到这样做的方法。据我所知,绑定与属性一起工作,因此您需要在类中创建属性,它将返回ToString()的结果。: 下面是一种强制网格不为除Textproperty以外的任何内容创建列的方法: grid.Co

我正在将对象列表绑定到Winform DataGridView。这很好,对象上的每个属性都有一列。现在,我已经覆盖了基于属性输出文本的对象上的“ToString”。现在我想更改我的DataGridView,使其具有一个绑定到对象的“ToString”属性的列。这是可能的,因为到目前为止我还没有找到这样做的方法。

据我所知,绑定与属性一起工作,因此您需要在类中创建属性,它将返回
ToString()的结果。

下面是一种强制网格不为除
Text
property以外的任何内容创建列的方法:

grid.Columns.Add(new DataGridViewTextBoxColumn() {DataPropertyName = "Text", HeaderText = "Custom ToString value"});
grid.AutoGenerateColumns = false;
绑定:

var people = new List<Person>()
    {
        new Person() {Name = "A", Age = 20},
        new Person() {Name = "B", Age = 30},
    };
grid.DataSource = people; 
var people=newlist()
{
新人(){Name=“A”,年龄=20},
新人(){Name=“B”,年龄=30},
};
grid.DataSource=人;

我通过以下链接解决了这个问题:

解决方案是包装每个字符串,以便绑定机制知道要绑定什么。

可能重复的字符串
var people = new List<Person>()
    {
        new Person() {Name = "A", Age = 20},
        new Person() {Name = "B", Age = 30},
    };
grid.DataSource = people;