【问题标题】:Is it possible to place/bind dictionary in a datagridview and make it editiable?是否可以在 datagridview 中放置/绑定字典并使其可编辑?
【发布时间】:2021-01-29 08:57:53
【问题描述】:

我有一个包含以下限制的嵌套字典: 字典>。数据格式为:Dictionary>。

我想将此字典绑定到数据网格视图。第一个键永远不会有多个值(字典),同样适用于子字典。

我的 datagridview 中有三列,我想将字典绑定到它。三列是频率、最小值、最大值。我希望主字典中的每个键都是一个新行,并且该频率的最小值和最大值将来自键值。这可能吗?

其次,何时实现。我希望用户能够使用新的频率值和新的最小最大值插入新行。由于它绑定到字典,字典也将具有这个新条目/行。

我只写了 2 到 3 个月的代码,然后就掉进了兔子洞。 winforms 可以吗?

【问题讨论】:

标签: c# winforms dictionary datagridview


【解决方案1】:

我不明白你为什么需要字典。
您可以将数据结构建模为单个类,而不是将其很好地绑定到 datagridview。

public class Frequency
{
    public double Value { get; set; }
    public double Min { get; set; }
    public double Max { get; set; }
}

然后在表单构造器中举例:

private BindingList<Frequency> _frequencies;

public MyForm()
{
    var frequency1 = new Frequency { Value = 1, Min = 0, Max = 3 };
    var frequency2 = new Frequency { Value = 1, Min = 0, Max = 3 };
    var frequency3 = new Frequency { Value = 1, Min = 0, Max = 3 };

    _frequencies = new BindingList<Frequency>
    {
       .AllowNew = true,
       .AllowEdit = true,
       .AllowRemove = false,
    };

    _frequencies.Add(frequency1);
    _frequencies.Add(frequency2);
    _frequencies.Add(frequency3);

    myDataGridView.DataSource = frequencies;
}

【讨论】:

  • 谢谢你。我去了这个方法。但是,由于我获取这些数据的方式,我将所有内容都放在了嵌套字典中。然后,我从字典中创建了一个类 List 的列表,并将该列表传递给 datagridview。我现在的问题是,我无法向 datagridview 添加新行。当控件是数据绑定时,我似乎无法添加行。我创建了一个“添加行”按钮并使用了 dataGridView1.Rows.Add();
猜你喜欢
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多