Wie kann ich meine Kontrolle zu erkennen, die Escape-Taste ermöglichen, bevor das Datagridview meiner Kontrolle schließen?

StackOverflow https://stackoverflow.com/questions/442009

  •  22-07-2019
  •  | 
  •  

Frage

Ich habe eine Kontrolle mit einer Rückgängig-Funktion, wenn der Benutzer drücken Sie die Steuerflucht wird den ursprünglichen Wert zurück.

Das Problem ist, wenn ich meine Kontrolle zu Datagridview integriert. Die Datagridview „frisst“ die Escape-Taste, daher meine Kontrolle nicht die Escape-Taste erkennen kann.

Als ich „return true“ auf EditingControlWantsInputKey setzen, meine Kontrolle der Lage war, die Escape-Taste zu erkennen, aber ein anderes Problem entstand, kann die Datagridview nicht meiner Kontrolle schließen, es bleibt in EditMode.

Wie kann ich meine Kontrolle ermöglichen, die Escape-Taste zu erfassen, während auch die Datagridview ermöglicht meine Kontrolle zu schließen?

War es hilfreich?

Lösung

Ich war zu lösen mein eigenes Problem kann. Ich habe die Rückgängig Methode meiner LookupBox Öffentlichkeit, dann auf meine Datagridview-Kontrolle ( Klasse DgvLookupBoxEditingControl: LookupBox, IDataGridViewEditingControl ), habe ich den folgenden Code :

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == Keys.Escape)            
            this.Undo();            

        return base.ProcessCmdKey(ref msg, keyData);


    }

Andere Tipps

Sie sollten "return true" nur dann, wenn Keys.KeyCode == Keys.Escape;
sonst zurückkehren ! DataGridViewWantsInputKey.

Sie können auch PreviewKeyDown Handler Ihre Editiersteuerabschnitt hinzufügen und erkennen dort entkommen.

            dataGridView1.EditingControlShowing += (o, e) => {

            if(e.Control is DataGridViewTextBoxEditingControl)
            {                 
                var editBox = e.Control as DataGridViewTextBoxEditingControl;
                editBox.PreviewKeyDown += KeyPressHandler;
            }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top