【问题标题】:DataGridViewComboBoxColumn Selected Value / IndexDataGridViewComboBoxColumn 选定值/索引
【发布时间】:2018-12-05 16:50:17
【问题描述】:

我正在尝试使用字符串列表填充 DataGridViewComboBoxColumn,然后根据它们在表单加载时的值选择其中一个。

人们会想到一个简单的任务,但我就是做错了。

我正在用这样的字符串填充 DataGridViewComboBoxColumn 没有问题:

ComboBoxColumn.Items.AddRange("Mr.", "Ms.", "Mrs.", "Dr.");

我似乎也可以毫无问题地将其添加到 DataGridView(这是不正确的,请参阅编辑):

ExampleDataGrid.Rows.Add("", ComboBoxColumn, 1000, "");

现在我想设置“先生”。负载时选择。其他帖子建议我应该能够简单地使用:

ExampleDataGrid.Rows[i].Cells["ExampleColumnName"].Value = "Mr.";

但是每当我使用它时,我都会收到一个错误,告诉我该值无效。 有什么我想念的吗?

但是,我可以使用它来毫无问题地获得设定值:

string Title = ExampleDataGrid.Rows[i].Cells["ExampleColumnName"].Value;

我查看了文档,但似乎没有提到如何在这种情况下实际使用 .Value。 Microsoft Docs

任何关于我哪里出错的想法都会很棒。

编辑:

我遇到的问题是由于我在 “ExampleDataGrid.Rows.Add()”。这实际上应该包含您要设置的值。例如

ExampleDataGrid.Rows.Add("", "Mr.", 1000, "");

【问题讨论】:

  • Mr. 在组合框项目的末尾有一个 .Mr 不存在于项目中,因此将其设置为组合框单元格的值将引发异常。
  • 好地方,遗憾的是这并不能解决问题。我收到相同的错误消息 Exception = {"DataGridViewComboBoxCell value is not valid."}
  • 您在调试器中查看了吗? ExampleDataGrid.Rows[i].Cells["ExampleColumnName"]中的对象是什么类型
  • Cells["ExampleColumnName"] 是 DataGridViewCellsCollection,但 .Value 在运行时显示为 DataGridViewComboBoxColumn。

标签: c# winforms datagridview datagridviewcomboboxcolumn


【解决方案1】:

你可以这样初始化DataGridView

private void Form1_Load(object sender, EventArgs e)
{
    var textBoxColumn = new DataGridViewTextBoxColumn();
    textBoxColumn.Name = "textBoxColumn";

    var comboBoxColumn = new DataGridViewComboBoxColumn();
    comboBoxColumn.Items.AddRange("A", "B", "C");
    comboBoxColumn.Name = "comboBoxColumn";

    dataGridView1.Columns.Add(textBoxColumn);
    dataGridView1.Columns.Add(comboBoxColumn);

    dataGridView1.Rows.Add("1", "A");
    dataGridView1.Rows.Add("2", "B");
}

然后以这种方式更新第二行的comboBoxColumn 的值:

private void button1_Click(object sender, EventArgs e)
{
    //You can use either of the following ways:
    dataGridView1[1, 1].Value = "C";
    //dataGridView1["comboBoxColumn", 1].Value = "C";
    //dataGridView1.Rows[1].Cells["comboBoxColumn"].Value = "C";
    //dataGridView1.Rows[1].Cells[1].Value = "C";
}

您为单元格设置的值应介于您添加到ItemsDataGridViewComboBoxColumn 的值之间。

【讨论】:

  • 但是,一般来说,我建议使用数据绑定而不是使用未绑定的DataGridView
  • 谢谢你,这是一个很好的例子。看着这个,我相信我以错误的方式添加了组合框值。 ExampleDataGrid.Rows.Add("", ComboBoxColumn, 1000, "");例如应该是 ExampleDataGrid.Rows.Add("", "Mr." 1000, "");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
  • 1970-01-01
  • 2018-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多