title image


Smiley Re: Eventhandler wird nicht ausgelöst!?
Guten Morgen atmosfear,



ist zwar nicht so früh wie bei dir, bin aber trotzdem stolz, dass ich mich heute auf die Arbeit schleppen konnte :-)



Ganze Zeile selektieren:



Ich hab mal deine Variante vom Abfangen des CurrentCellChanged Events versucht, bei mir hat's funktioniert.

Kann es sein, dass du die falsche Spaltennummer abfragst?

Folgendes ist nämlich Spalte 2 und nicht Spalte 1:

if( grid.CurrentCell.ColumnNumber == 1 )



Ich hab mir das noch mal durch den Kopf gehen lassen und finde deine Variante zum Selektieren der ganzen Zeile doch besser. Wenns am DataGridTextBoxColumn steuerbar ist musst du z.B. keinen Code am DataGrid ändern, wenn du die Spalten mal vertauschst...

Am DataGrid ist es nur dann interessant, wenn prinzipiell immer die ganze Zeile selektiert werden soll, unabhängig davon, welche Spalte geklickt wird.



Zu deiner Edit Methode an der MADGridTextBox: ist das .UnSelect(SelectedRow) nötig?

Kann man überhaupt mehrere Zeilen selektieren?

Bei mir war automatisch nach .Select(SelectedRow) nur diese eine Zeile selektiert.

Dann könntest du die SelectedRow Variable rausschmeißen und hättest in der Edit Methode nur eine Zeile:

this.DataGridTableStyle.DataGrid.Select( rowNum );



Pfeiltaste nach links:



Wenn Pfeiltaste Links nur in der ersten Zeile abgefangen werden soll, musst du die OnKeyDown Methode am DataGrid erweitern:

Aus:

case Keys.Left:

if( this.CurrentCell.ColumnNumber != 0 )



wird:

case Keys.Left:

if( !(this.CurrentCell.ColumnNumber == 0 && this.CurrentCell.RowNumber == 0) )





IsInputKey und KeyDown:



Wenn man auf der Tastatur eine Taste drückt, nimmt man an, dass das KeyDown Event mit dem entsprechenden KeyCode ausgelöst wird.

Die Steuerelemente schalten da aber einen Filter davor, es wird nicht für jede Taste das KeyDown Event ausgelöst.

Welche Taste das Event auslöst und welche nicht wird über die IsInputKey Methode gesteuert, welche am Control definiert ist und somit jedem Steuerelement zur Verfügung steht.

Im Prinzip wird vor dem Auslösen des KeyDown Events der KeyCode an die IsInputKey des Steuerelements übergeben. Wenn true zurückgegeben wird, wird das Event ausgelöst, ansonsten nicht.



In der IsInputKey Definition an der Basisklasse Control wird für die Pfeiltasten false zurückgegeben, deshalb wird beim Drücken der Pfeiltasten kein KeyDown Event ausgelöst.



Um das Event auszulösen musstest du also eine Klasse erzeugen und vom DataGrid ableiten, um die IsInputKey Methode zu erweitern und bei den Pfeiltasten true zurück zu geben.



Hoffentlich war der Roman verständlich geschrieben :-)



Grüße

Bostich

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: