Frage

Also mein Ziel sobald sich ein Benutzer klickt auf das Element aus der Dropdown-Liste ist, wird die Zelle automatisch EndEdit () aufrufen. Das Seltsamste ist, dass der folgende Code wird die Arbeit an den 2.-n ComboBoxesCells, dass ich fallen nach unten und wählen Sie Werte aus, aber nie die erste. Gibt es etwas, was ich bin fehlt hier ??

        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);
            }

Sollte hier hinzufügen, dass ich von Datagridview bin vererben, wenn das nicht offensichtlich ist,

War es hilfreich?

Lösung

Wenn so etwas wie „ Das Seltsamste ist, dass der folgende Code wird die Arbeit an den 2.-n ComboBoxesCells, dass ich fallen nach unten und wählen Sie Werte aus, aber nie die erste “ geschieht, ist es oft, weil die Ereignis geschieht, bevor etwas, das Sie brauchen, ist getan.

Seing Ihr Beispiel, ich würde sagen, dass das erste Mal, wenn Sie auf,

DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;

gibt Ihnen control == null.

Vielleicht sollten Sie das Ereignis ändern gewählt Ihr Material von Click zu SelectedIndexChanged oder SelectedValueChanged zu tun?

Hope, das hilft,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top