Mithilfe der + (plus) und - (minus) Tasten der Tastatur als incrementors und decrementors in einem DataGridView
Auf eine WinForms-Anwendung, die ich Schreibe in C#, ich habe eine DataGridViewTextBoxColumn mit Zellen holding integer-Werte, die ich möchte, dass der Benutzer in der Lage sein zu erhöhen oder verringern, indem Sie die + und - Tasten von der Tastatur ein.
Habe ich behandelt, das KeyDown-Ereignis, wie es ist, was ich verwenden in der Regel zu behandeln, Löschen, Schlüssel, etc, aber es funktioniert nicht für Plus-und Minus-Tasten drücken Sie bewirkt, dass die Zelle zu gehen, um in den Edit-mode, und das KeyDown-Ereignis wird nie ausgelöst für diese Tasten als Ergebnis. Dasselbe für das KeyPress-Ereignis
Tatsächlich, es wird gefeuert, wenn ich die Zellen auf readonly, aber ich bin nicht glücklich mit dieser Lösung, da Sie mich zwingen würde, die Eigenschaft von true auf false in mehreren Bereichen meinen code und konnte sich schnell zu chaotisch.
Was wäre bitte der beste Weg, dies zu erreichen?
Dank.
InformationsquelleAutor Kharlos Dominguez | 2010-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie zum abfangen der Tastenkombination, bevor Sie die datagrid.
Dieser sieht erstaunlich nahe an dem, was Sie zu tun versuchen:
http://support.microsoft.com/kb/320584
Neben der Tatsache, dass es ist nicht so elegant, wie ich wollte, das funktioniert ganz gut, also vielen Dank. Ich lasse dieses offen für eine Weile, nur für den Fall jemand anderes vielleicht noch andere Vorschläge.
InformationsquelleAutor Dave Swersky
Haben Sie versucht, mit dieser:
anstelle von diesem: Schlüssel.OemMinus
verwenden Sie diese: Schlüssel.Subtrahieren
und anstelle von diesem: Schlüssel.Oemplus
verwenden Sie diese: Schlüssel.Hinzufügen
Keys.Oemplus
undKeys.OemMinus
sind für die [+] und [-] Tasten die Nummer der Zeile, undKeys.Add
undKeys.Subtract
sind für die [+] und [ - ] - Taste auf dem numerischen Tastenfeld.InformationsquelleAutor Tomko
Wow, der KB-Artikel ist ziemlich schlecht. Das sollte getan werden, durch überschreiben IsInputKey().
I don ' T care viel für DGV, es ist ein Kerl, anpassen. Aber wahrscheinlich können Sie schlagen diese in eine Art Form:
Dies ist genau was ich meinte, es ist ein Schmerz. Setzen Sie e.SuppressKeyPress und e.Handled auf true, wenn Sie verwenden die Tastenkombination, die ich vergessen habe zu zählen. Post aktualisiert.
Danke, ich habe versucht, den neuen code aber das problem ist, dass die Inkrement-und Dekrement-event-Handler nicht ausgelöst, wenn die Zelle kann vom Benutzer verändert werden. Wenn ich Sie zu Lesen-nur, die Ereignisse auftreten, aber in meinem Fall, Sie müssen geändert werden. Es sieht aus, als wenn die Zelle gehen, um Bearbeitungs-Modus erfolgen, bevor die OnKeyDown-Methode, und verhindern, dass es überhaupt läuft. In meinem Fall, die Zellen geändert werden sollte, durch die Benutzer. Die Methode, die benutzt wird in meinem Kommentar unten Daves Antwort arbeiten, weil die Formular-Ereignisse auslösen, bevor der DGVs, aber es ist nicht wirklich elegant, wie ich sagte. Jeder Weg zu Ihr machen, arbeiten?
InformationsquelleAutor Hans Passant