更新datagridview组合框,抛出“操作无效,因为它导致对SetCurrentCellAddressCore函数的可重入调用。”

时间:2012-12-11 08:56:42

标签: c#

当我尝试更新它抛出的datagridview组合框的内容时 操作无效,因为它导致对SetCurrentCellAddressCore函数的可重入调用 at line,node.Cells [(int)Parameters.eColumn.valueBySelectionColumn] = cboCell;

我该如何解决这个问题? THX

    private void treeGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        try
        {
            if (e.Control.GetType() == new DataGridViewComboBoxEditingControl().GetType())
            {
                if ((cboEditor != null) && (cboEditor_EventHandler != null))
                {
                    cboEditor.SelectedIndexChanged -= cboEditor_EventHandler;
                }
                cboEditor = (DataGridViewComboBoxEditingControl)e.Control;
                cboEditor.SelectedIndexChanged += cboEditor_EventHandler;

                if (this.treeGridView1.SelectedCells.Count > 0 &&
                    this.treeGridView1.SelectedCells[0].ColumnIndex == (int)Parameters.eColumn.valueBySelectionColumn)
                {
                    TreeGridNode node = GetCurrentNode();
                    object cellValue = node.Parent.Cells[(int)Parameters.eColumn.sectionTypeColumn].Value;

                    Parameters.eSection section = (Parameters.eSection)dicSection[cellValue.ToString()];
                    this.treeGridView1.Focus();
                    switch (section)
                    {
                        case Parameters.eSection.UNIX_Script:
                            DataGridViewComboBoxCell cboCell = Parameters.ValidateChoice(Parameters.eSection.UNIX_Script,
                                node.Cells[(int)Parameters.eColumn.parameterTypeColumn].Value,
                                ref cboEditor);
                            if (cboCell != null)
                            {
                                ***node.Cells[(int)Parameters.eColumn.valueBySelectionColumn] = cboCell;***
                                node.Cells[(int)Parameters.eColumn.valueBySelectionColumn].Style.BackColor =
                                    node.Cells[(int)Parameters.eColumn.sequenceColumn].Style.BackColor;
                            }
                            break;
                    }
                }
            }
        }
    }

0 个答案:

没有答案