System.ArgumentException:DataGridViewComboBoxCell值无效

时间:2011-01-21 04:54:44

标签: c# .net winforms datagridview datagridviewcomboboxcell

dataGridView.Rows.Add(
    metaData.Offset.ToString("X2"),
    metaData.Length,
    metaData.Format,        // This parameter goes to a ComboBox cell which throws an
    metaData.Description,   //     exception above                       
    null,
    null);

以编程方式将数据分配给DataGridViewComboBoxCell的有效方法是什么?

3 个答案:

答案 0 :(得分:14)

要解决此问题,只需为DataGridView添加“DataError”即可。这就是全部,步骤:双击datagridview并从事件列表中选择“dataerror”事件。

DataError事件使您能够处理在数据处理操作期间由控件调用的代码中抛出的异常。

就是这样:))

答案 1 :(得分:3)

要解决此问题,请为DataGridView添加“DataError”事件,然后添加

只需写下: e.Cancel = true;

e.g:

private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
    e.Cancel = true;
}        

答案 2 :(得分:0)

聚会晚了一点,但是我认为这对其他人还是有用的。就我而言,出现此错误是因为我基于这样的枚举添加了一个组合框:

// Combo
DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
combo.DataSource = Enum.GetValues(typeof(PhoneNumberType));
combo.DataPropertyName = "PhoneNumberType";
combo.Name = "PhoneNumberType";
phoneNumberGrid.Columns.Add(combo);

现在,当DataGridView创建新的(空)行时,此空值无法映射到组合框。因此,我没有忽略错误,而是设置了组合框的默认值。我添加了事件DefaultValuesNeeded,然后将值设置为枚举中的一项。像这样:

private void phoneNumberGrid_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{
        // Prevent System.ArgumentException: DataGridViewComboBoxCell value is not valid
        e.Row.Cells["PhoneNumberType"].Value = PhoneNumberType.Private;
}

..并且异常消失了。