1

datagridview コンボ ボックスの内容を更新しようとすると、次の行で SetCurrentCellAddressCore 関数が再入可能に呼び出されるため、Operation is not valid がスローされます。

どうすればこの問題を解決できますか?? 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;
                    }
                }
            }
        }
    }
4

0 に答える 0