【问题标题】:How to bind dataGridView with my own object array?如何将 dataGridView 与我自己的对象数组绑定?
【发布时间】:2020-03-18 16:50:30
【问题描述】:

我有一堂课:

  public class MarketTrade
  {
        public int trade_seq;
        public double amount;
        public double price;
        public direction dir; //=enum
  }

我希望我的 dataGridView1 显示如下表格:

trade_seq   amount  price   dir
00001       10      100     buy
00002       5       99      buy
00003       5       100     buy
00004       15      98      sell
00005       20      100     sell

我尝试了这个但失败了:

  MarketTrade[] trades =  GetTrades();
  this.dataGridView1.DataSource = trades;

有简单的方法吗?

【问题讨论】:

  • 把这些字段变成属性。
  • 数据绑定适用于 properties。您的 MarketTrade 课程只有公共成员/字段。此外,价格和数量可能更有意义decimal
  • 好的,属性工作正常,谢谢!

标签: c# winforms data-binding datagridview datasource


【解决方案1】:

创建一个具有如下属性的类:

public class MarketTrade
{
    public int TradeSeq { get; set; }
    public double Amount { get; set; }
    public double Price { get; set; }
    public Direction Dir { get; set; }

}

如下创建一个枚举:

public enum Direction
{
    Buy,
    Sell
}

创建你的数据源(我已经在这个方法的帮助下为 10 个对象创建了一个随机数据源):

private MarketTrade[] GetTrades()
    {
        MarketTrade[] arrMarketTrades = new MarketTrade[10];

        for (int i = 0; i < 10; i++)
        {
            arrMarketTrades[i] = new MarketTrade()
            {
                Amount = (i + 1) * 4,
                Dir = i / 2 == 0 ? Direction.Buy : Direction.Sell,
                Price = (i + 1) * 2,
                TradeSeq = i
            };
        }

        return arrMarketTrades;
    }

最后,在表单加载事件中设置数据源,您可以根据需要进行更改:

    private void Form1_Load(object sender, System.EventArgs e)
    {
        dataGridView1.DataSource = this.GetTrades();
    }

【讨论】:

    猜你喜欢
    • 2020-08-03
    • 1970-01-01
    • 2011-08-22
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2011-05-01
    相关资源
    最近更新 更多