将 DataGridView 中的选定值传递给 ComboBox

Pass the Selected Value in DataGridView to ComboBox

当我单击我的 DataGridView 中的一个单元格时,值被传递到我的文本框,但是当涉及到我的组合框时我遇到了一个问题,它只是保持为空。我已经尝试过 SelectedItem 和 SelectedIndex 但它保持为空。我已经设法使用 SelectedText 将值放在我的组合框中,但是一旦我更新了我的数据库,我的组合框中就会出现 NullReferenceException,这是我的代码:

private void dgvStudentRecord_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex >= 0)
        {
            DataGridViewRow row = this.dgvStudentRecord.Rows[e.RowIndex];
            txtStudNum.Text = row.Cells["studentId"].Value.ToString();
            txtStudName.Text = row.Cells["studentName"].Value.ToString();
            cboSection.SelectedText = row.Cells["section"].Value.ToString();
            numPrelim.Value = Convert.ToDecimal(row.Cells["prelim"].Value);
            numMidterm.Value = Convert.ToDecimal(row.Cells["midterm"].Value);
            numFinals.Value = Convert.ToDecimal(row.Cells["finals"].Value);
        }
    }

按照您接近它的方式来做它会有些头疼,因为 ComboBox 根本不能很好地处理意外值,而 SelectText 属性 它没有按照您的想法去做(当您设置 属性) 时,它不会 select 从其内部列表中获取一个项目(参见:https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedtext(v=vs.110).aspx

你最好写这样的东西:

int index = cboSection.FindString(row.Cells["section"].Value.ToString());
if(index > -1)
{
   cboSection.SelectedIndex = index;
}
else
{
        object newSection = row.Cells["section"].Value.ToString();
        cboSection.Items.Add(newSection);
        cboSection.SelectedItem = newSection;
}

已编辑以显示条件 select 或添加。

最终编辑...呵呵。

试试这个,ComboBox.Text 属性

 combobox1.Text=row.Cells[cellIndex].Value.ToString();