Autor Beitrag
Nelson
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 23.04.10 13:44 
Hallo,

ich habe das Problem, daß bei meinen "TextBoxen" weder das KeyPress-Event noch das KeyDown-Event ausgelöst wird.

Das ist der Code, der eigentlich ausgeführt werden soll :

private void textBox4_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
e.Handled = true;
}

Die KeyPreview-Eigenschaft des Formulars steht auf FALSE. Gibt es eine Vorbedingung für das Auslösen dieser Events ? (Also natürlich abgesehen von Focus und Dateneingabe). Ich arbeite mit Visual Studio 2008 Express Edition Version 9.0.30729.1 SP.

Nach mehreren Stunden googlen finde ich zwar unzählige ähnliche Code-Schnipsel aber keine Erklärung warum das Event überhaupt nicht ausgelöst wird.
Ich fange gerade erst an C# zu lernen darum fehlt mir noch einiges an Kontext ;-) aber vielleicht habt Ihr ja ne einfache Erklärung für mich.

Das TextChanged-Event funktioniert dagegen z.Bsp. für textBox4 ...

Danke !!

Nelson
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 23.04.10 14:19 
Zitat aus der MSDN-Hilfe
Zitat:
Certain keys, such as the TAB, RETURN, ESCAPE, and arrow keys are handled by controls automatically. To have these keys raise the KeyDown event, you must override the IsInputKey method in each control on your form.


Das gilt für KeyPress genauso. Wenn es dir also um einen der in der Hilfe genannten Keys geht mußt du die betroffenen Controls ableiten und in denen die IsInputKey Methode wie im Beispiel in der Hilfe überschreiben.
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 23.04.10 14:29 
Hallo und :welcome:,

ich denke das Problem ist weit aus "simpler" :) Hast du den das OnClick-event registriert oder einfach nur die Methode in deinen Code reingeschrieben?

Du musst dich nämlich auf die Events regestrieren. Das kannst du zum einen mit dem Designer machen, in dem du auf ein Control klickst und in der Propertybox dann auf Event gehst und Doppelklick machst. Das mal nur ganz knapp... im Internet findest du bestimmt zahlreiche genauere Beschreibungen.

Gruß
Nelson Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 23.04.10 14:29 
Das KeyPress Event wird überhaupt nicht ausgelöst, d.h. nicht nur bei den speziellen Tasten ! Also auch wenn ich z.Bsp. ein "a" eingebe passiert nix ...
Nelson Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 23.04.10 15:47 
Daniel, Du lagst richtig mit deiner Vermutung :-)

Wenn ich diese Zeile ergänze, dann klappt's.

textBox4.KeyPress += new KeyPressEventHandler(textBox4_KeyPress);

vielen Dank !!