2

したがって、私の目標は、ユーザーがドロップダウンリストからアイテムをクリックすると、セルが自動的にEndEdit()を呼び出すことです。最も奇妙なことは、以下のコードが、ドロップダウンして値を選択する2番目からn番目のComboBoxesCellsで機能することですが、最初のコードは決して機能しません。ここに欠けているものはありますか?

        protected override void OnCellClick(DataGridViewCellEventArgs e)
        {
            base.OnCellClick(e);

            DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;
            if (control != null)
            {
                   control.DropDownClosed += new EventHandler(control_DropDownClosed);
            }
        }

            void control_DropDownClosed(object sender, EventArgs e)
            {
                this.EndEdit();
                DataGridViewComboBoxEditingControl control = sender as DataGridViewComboBoxEditingControl;
                control.DropDownClosed -= new EventHandler(control_DropDownClosed);
            }

明らかでない場合は、DataGridViewから継承していることをここに追加する必要があります

4

1 に答える 1

1

最も奇妙なことは、ドロップダウンして値を選択した2番目のComboBoxesCellで動作するが、最初のコードは決して発生しないことです」のような場合は、必要なことが行われる前にイベントが発生することがよくあります。

あなたの例を見て、私はあなたが最初にクリックしたとき、

DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;

あなたに与えますcontrol == null

たぶん、あなたはあなたの仕事をするために選ばれたイベントをClickからSelectedIndexChangedまたはに変更する必要がありますかSelectedValueChanged

お役に立てれば、

于 2010-12-10T12:41:18.583 に答える