【问题标题】:Two DataGridViews with the same content. Can I have the same column names?两个具有相同内容的 DataGridView。我可以使用相同的列名吗?
【发布时间】:2020-03-19 19:06:38
【问题描述】:

我在同一个表单的 2 个选项卡上使用 2 个 DataGridView,它们包含相同的信息,但以 2 种不同的方式使用。相信我,在这种情况下这是有道理的。 :)

当我创建 DataGridViews 时,C# 似乎告诉我需要为 columns 赋予唯一的名称,即使它们位于不同的表中。

有没有办法解决这个问题?从逻辑的角度来看,这在我看来是完全没有必要的,如果我必须有两个函数来填充两个具有相同值的表,这将导致代码混乱。如果我可以使用相同的函数并将目标 DataGridView 作为参数传递,那就太好了。我希望我只是遗漏了一些明显的东西。

有什么建议……或合乎逻辑的解释?

【问题讨论】:

  • 列对象必须具有唯一的名称,但它们可以具有向用户显示的相同标题/标题。不过,您无需手动创建它们 - DGV 会为您完成。
  • 感谢您的回复……您已经确认了我的“恐惧”。知道为什么他们需要不同吗?这似乎是一个完全不必要的约束。我的大脑不喜欢不合逻辑的限制。 :)
  • 不清楚有什么不同?这两个数据网格有什么关系?
  • 为什么它们需要是 Column1、Column2、Column3 以外的任何东西...?一旦创建和添加它们,您通常不会直接将它们作为对象引用

标签: c# winforms datagridview


【解决方案1】:

如果您使用设计器创建列,那么它们的名称应该像任何其他组件一样是唯一的。

原因是设计器根据列名生成成员字段,不能有两个同名的字段。

如果您不使用设计器创建列而只是使用代码创建它们,或者通过将AutoGenerateColumns 设置为true,那么没有限制,因为这些列将被添加到DataGridView 而无需表单中的字段。

仅供参考,除了按名称查找列之外,您还可以通过Index 查找它们。

【讨论】:

    【解决方案2】:

    不,你不能。因为表单中的每个工具都有一个唯一的 id 名称来调用它。所以每个“dataGridView”,每一列都有它的唯一 id。

    尝试使用一两个“groupBox”或“panel”。将每个“dataGridView”分别放在其块中。

    【讨论】:

      猜你喜欢
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 2013-06-18
      • 1970-01-01
      • 2019-12-28
      • 2021-02-16
      • 1970-01-01
      相关资源
      最近更新 更多