Laden...

Wie kann ich auf Tastatureingaben in einer DataGridViewTextBoxCell reagieren?

Erstellt von Anchiko vor 3 Jahren Letzter Beitrag vor 3 Jahren 268 Views
A
Anchiko Themenstarter:in
12 Beiträge seit 2020
vor 3 Jahren
Wie kann ich auf Tastatureingaben in einer DataGridViewTextBoxCell reagieren?

Hallo,

ich habe ein ungebundenes DataGridView-Objekt erstellt und möchte auf Tatstureingaben in einer DataGridViewTextBoxCell reagieren (Framework .NET 5.0).

Ich bin dabei inhaltlich so vorgegangen wie es hier beschrieben wird:

  1. Ich habe ein eigenes DataGridviewTextBoxCell-Objekt erstellt und die OnKeyDown-Methode überschrieben:

    public class EigeneDataGridViewTextBoxCell : DataGridViewTextBoxCell
    {
        public EigeneDataGridViewTextBoxCell() : base() {  }

        protected override void OnKeyDown(KeyEventArgs e, int rowIndex)
        {
            base.OnKeyDown(e, rowIndex);
            // weitere Bearbeitung
        }
    }

  1. Ich habe ein eigenes DataGridViewColumn-Objekt erstellt:

    public class EigeneDataGridViewColumn: DataGridViewColumn
    {
        public EigeneDataGridViewColumn() : base() 
        {
            CellTemplate = new EigeneDataGridViewTextBoxCell();
        }
    }

  1. Diese eigene Spaltenart habe ich meinem DataGridView-Objekt hinzugefügt:

EigeneDataGridViewColumn spalte = new EigeneDataGridViewColumn()
{
    Name = "DGVCTest",
    HeaderText = "Test"
};
dataGridView1.Columns.Add(spalte);

Leider wird die OnKeyDown-Methode meines "EigeneDataGridViewTextBoxCell"-Objekts nie aufgerufen.

Was mache ich falsch?

Vielen Dank im Voraus!

16.834 Beiträge seit 2008
vor 3 Jahren

Als Hinweis: es gibt kein Framework .NET 5.0.
Die Ära vom .NET Framework ist seit 4.8 vorbei. Die neue Welt heisst .NET Core und seit .NET 5 ist das Core weggefallen.

Du musst an allen eigenen Controls die Events überschreiben; das hat Du schon gemacht, auch wenn man das hier nicht sieht, oder?

A
Anchiko Themenstarter:in
12 Beiträge seit 2020
vor 3 Jahren

Hallo Abt,

vielen Dank für Deine Antwort.

Ich stehe jetzt etwas auf dem Schlauch: was meinst Du mit "..an allen eigenen Controls..."?

Ich dachte, wenn der Column als CellTemplate meine eigene TextBoxCell hinterlegt ist, dass dann automatosch dieses Objekt verwendet wird. Oder muss ich es so verstehen, dass bei jedem Instanziieren der TextBoxCell meine eigene TextBoxCell angegeben werden muss? Wenn ja, wo muss ich ansetzen?

Danke und Grüße
Anchiko