DataGridViewComboBoxColumn选定的值/索引

时间:2018-12-05 16:50:18

标签: c# winforms datagridview datagridviewcomboboxcolumn

我试图用一列字符串填充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

任何关于我要去哪里的想法都很棒。

编辑:

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

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

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式初始化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";
}

您为单元格设置的值应介于您添加到Items的{​​{1}}的值之间。