【问题标题】:DataGridView binding to an object's "ToString" propertyDataGridView 绑定到对象的“ToString”属性
【发布时间】:2015-05-07 08:32:57
【问题描述】:

我将对象列表绑定到 Winform DataGridView。这很好用,并且我的对象上的每个属性都有一个列。我现在已经覆盖了基于属性输出文本的对象上的“ToString”。我现在想更改我的 DataGridView 以便它有一个绑定到我的对象的“ToString”属性的单列。这可能吗,到目前为止我还没有找到方法。

【问题讨论】:

标签: c# winforms data-binding visual-studio-2013 datagridview


【解决方案1】:

据我所知,绑定适用于属性,因此您需要在您的类中创建属性,这将返回 ToString() 的结果:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public string Text { get { return ToString(); } }

    public override string ToString()
    {
        return String.Format("{0}, {1} years", Name, Age);
    }
}

这是一种强制网格不为除Text 属性之外的任何内容创建列的方法:

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; 

【讨论】:

    【解决方案2】:

    我通过以下链接设法解决了这个问题:Binding List Of String

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

    【讨论】:

      猜你喜欢
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      相关资源
      最近更新 更多