【问题标题】:Filling a DataGridView ComboBox with values in C/C++用 C/C++ 中的值填充 DataGridView ComboBox
【发布时间】:2019-09-10 06:42:28
【问题描述】:

我正在为大学创建一个 Windows 窗体应用程序。我的数据存储在抽象数据类型的多个 c 数组中。每个数组都显示在它自己的 datagridview 中。这一切都没有问题。 由于数据像在数据库中一样连接,所以我在父表中添加了一个新列,并将 ColumnType 设置为 DataGridViewComboBoxColumn。现在我需要用不同数组/datagridview 的数据填充这个组合框。

我已经尝试从我的数组中手动​​添加选项,如以下问题所述:Filling DataGridView ComboBox programatically in unbound mode?。由于我需要使用 C/C++ 并且此示例使用 vb,因此使用的函数不可用。我可以选择我的列dataGridView1->Columns[0],但->Items 不存在。

是否可以从我的数组创建数据源以直接链接它们?还是我忽略了一种从数组中手动​​添加它们的方法?

【问题讨论】:

  • 哎呀,我的回答有误,对不起,我没有注意到你的标签是 c++ 而不是 c#,它在文本中也没有击中我。不幸的是,由于我对 linux 和 arduino 的 c++ 知识完全不了解,我无法有意义地扩展我的答案,因此我将其删除,因此您的问题被指示为未回答。再次抱歉。
  • 不用担心,它仍然帮助我找出问题的更多细节,尽管它还没有解决。如果你能找回它,它也可能对其他人有所帮助。
  • 好吧,谢谢你,如果它至少有一点帮助我很高兴。

标签: c++ c winforms datagridview datasource


【解决方案1】:

您没有提供任何代码,也没有很好地描述您在哪里遇到问题。假设您正在将未绑定列表填写到DataGridViewComboBoxColumn,这里是一个简单的示例。

C#:

DataTable dt;
dt.Columns.Add("ID", typeof(Int32));
dt.Columns.Add("Category", typeof(string));
dt.Rows.Add({1, "Fruits"});
dt.Rows.Add({2, "Vegetables"});
dt.Rows.Add({3, "Trees"});

DataGridViewComboBoxColumn dgCol = this.DataGridView1.columns("Category");
dgCol.ValueMember = "ID";
dgCol.DisplayMember = "Category";
dgCol.DataSource = dt;

在本例中,我们创建一个DataTable,用所需的值填充它,并将其用作DataGridViewComboBoxColumnDataSource。显然,您在DataGridView DataSource 中提供给此列的值必须与新DataTable "dt" 中的列表中的 ID 匹配。

您可以将数组或其他数据转换为DataTable,甚至可以直接将它们用作DataSource。这取决于你有什么数据。不过,原理会非常相似。

VB.NET:

    Dim dt As DataTable
    dt.Columns.Add("ID", GetType(Int32))
    dt.Columns.Add("Category", GetType(String))
    dt.Rows.Add({1, "Fruits"})
    dt.Rows.Add({2, "Vegetables"})
    dt.Rows.Add({3, "Trees"})

    Dim dgCol As DataGridViewComboBoxColumn = Me.DataGridView1.columns("Category")
    dgCol.ValueMember = "ID"
    dgCol.DisplayMember = "Category"
    dgCol.DataSource = dt

【讨论】:

  • 我实际上认为没有代码可以提供。我猜我如何填充我的 DataGridView 的代码对我的问题并没有真正的帮助,因为我正在寻找解决我的问题的函数,所以我还不知道它们是什么。如果您认为有任何帮助我会很乐意提供。
  • 正如我在问题中描述的那样,我需要使用 c 或 c++。您对如何用其中一种语言而不是 c# 或 VB 解决问题有任何想法吗?
  • 由于我的错误,我删除了答案,回答 C# 而不是 C++。我把它带回来了(未删除),因为@Platte 说它仍然有用。
猜你喜欢
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多