如何在gridview中更改其他单元格值时更改组合框的选定值

时间:2015-09-13 20:30:30

标签: c# windows

我要创建c#windows应用程序。在我的表单中,我有一个gridview,有两列,一列是textboxcolumn,另一列是Combobox列。我希望在同一行中更改第一个文本框列值时更改所选的组合索引。 例如,如果我在文本框单元格中输入2,则在下一个单元格组合框(产品)中,所选值在同一行中为2。请帮我代码。 提前谢谢。

1 个答案:

答案 0 :(得分:-1)

您需要使用以下内容处理CellValueChanged事件:

        private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        if(e.ColumnIndex == TextColumn.Index && ComboBoxColumn.Items.Count >0)
        {
            int itemIndex = GetCorrectItem();
            dataGridView1.Rows[e.RowIndex].Cells[ComboBoxColumn.Index].Value = ComboBoxColumn.Items[itemIndex];

        }
    }

GetCorrectItem()方法应根据您的具体实现获取正确的项目索引。

如果您想要在退出后输入文本框时更新组合框,则需要处理EditingControlShowing事件并处理编辑控件的TextChanged事件。如下所示:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        if (dataGridView1.CurrentCell.ColumnIndex == TextColumn.Index)
        {
            var textbox = e.Control as TextBox;
            if (textbox != null)
            {
                textbox.TextChanged += textboxColumn_TextChanged;
            }
        }
    }

    private void textboxColumn_TextChanged(object sender, EventArgs e)
    {
        int itemIndex = GetCorrectItem();
        dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[ComboBoxColumn.Index].Value = ComboBoxColumn.Items[itemIndex];
    }