我搜索了很多这个错误,许多相同的问题已经被问到,但它没有解决我的问题。 我得到如何将DataGridViewComboBoxCell转换为DataGridViewTextBoxCell
操作无效,因为它会导致对SetCurrentCellAddressCore函数的重入调用。
的情况是我有datagridview
与TextboxColumn
我使用CellBeginEdit
将其转换在ComboBoxColumn
,并CellValidate
后,我再次改变ComboBoxColumn到TextboxColumn。这些代码适用于所有人。但得到错误的确切路线e.RowIndex = 2
会抛出此异常,但其他行的剂量不会显示错误。如果我省略了这个错误并继续,那么e.RowIndex = 2单元格的值变为空白,其他行值的工作。
这里是CellBeginEdit
if (e.ColumnIndex == 2 && e.RowIndex >= 0)
{
try
{
string s = Convert.ToString(_dgvCoarseAggegateTest[e.ColumnIndex, e.RowIndex].Value);
string s1 = Convert.ToString(_dgvCoarseAggegateTest[e.ColumnIndex, 0].Value);
DataGridViewComboBoxCell c = new DataGridViewComboBoxCell();
string _SizeName = _cGetParrent._mGetParentCellValue(ref _dgvCoarseAggegateTest, e.RowIndex, 1);
_mFillSieveSizeGridCombo(_mGetMetalSizeID(_SizeName), ref c); // Here My Combo Will GetValues from SQL and it Returning Value
_dgvCoarseAggegateTest[e.ColumnIndex, e.RowIndex] = c; // Heres the error When e.RowIndex == 2 and if e.RowIndex != 2 then no error
_dgvCoarseAggegateTest[e.ColumnIndex, e.RowIndex].Value = s;
_dgvCoarseAggegateTest[e.ColumnIndex, 0].Value = s1;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
代码是如何解决这个问题。
UPDATE: 没有行有用户将增加新的行,并选择价值,基本的事情是我想说明的组合,并填写从数据库值,填充值是视情况而定,所以每一次新的值将来,
示例数据
testTable
1 A
2 B
3 C
4 D
5 E
6 F
7 G
8 H
9 I
在列1我加一个组合与值从1到9,在_mFillSieveSizeGridCombo
我传递id来SQL Server 2008和使用Combo.Item.Add(x)
方法填充组合。
奇怪。我无法复制。有多少行?第2行的值是否与其他值不同?你可以改变它到一个有效的?它是否发生在鼠标和F2上? (显然,我只是猜测 - )mFillSieveSizeGridCombo中的单元格c由于其rownumber而发生了特殊情况? – TaW 2015-03-15 21:57:04
@taw没有行有用户将增加新的行,并选择值,该基地的事情是我想说明的组合,并填写从数据库值,填充值是视情况而定,所以每一次新的价值观会来, – 2015-03-16 07:31:24
如果你对此有何评论'_mFillSieveSizeGridCombo'调用单元格的项目不会被填充。但错误仍然发生呢? – TaW 2015-03-16 07:36:47