Vb 08

Ich hab das Problem das wenn ich den fokus mit enter weiterschalte immer ein ton kommt.

Gibt es einen Befehl zum Töne ausschalten??
nach diesem Prinzipn habe ich das weiterschalten eingestellt (falsche Eingabebehandlung):

Private Sub txtOBJEKT_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtOBJEKT.KeyPress
Select Case e.KeyChar
Case „0“ To „9“, ChrW(Keys.Back)

Case ChrW(Keys.Return)
cmdber.Focus()

Case Else
e.Handled = True
Beep()
End Select
End Sub

Hallo Linden,

das hier ist ein Forum für VB, bis einschliesslich der Version 6!
.Net hat hier eigentlich nichts zu suchen. Dafür gibt es ein anderes Brett.
Aber sei es drum, schauen wir mal woran es liegt :smile:

Ich hab das Problem das wenn ich den fokus mit enter
weiterschalte immer ein ton kommt.

Das weisst darauf hin das du das Ereignis nicht selbst verarbeitet hast!

Gibt es einen Befehl zum Töne ausschalten??

Hmm, da muesste ich mal schauen. Aber für Dein Vorhaben ist das nicht von nöten!

nach diesem Prinzipn habe ich das weiterschalten eingestellt
(falsche Eingabebehandlung):

Private Sub txtOBJEKT_KeyPress(ByVal sender As Object, ByVal e
As System.Windows.Forms.KeyPressEventArgs) Handles
txtOBJEKT.KeyPress
Select Case e.KeyChar
Case „0“ To „9“, ChrW(Keys.Back)

Case ChrW(Keys.Return)
cmdber.Focus()

Case Else
e.Handled = True
Beep()
End Select
End Sub

Owei :confused:
Sehe ich das Richtig das bei Enter / return der Focus auf den Button gelegt werden soll? Das wenn eine Zahl eingegeben wird, diese gleich gelöscht wird?
Das alle andere Zeichen erlaubt sind? Auch das die Routine nur auf ein Object angewendet werden soll ? Wenn nicht, weisst du was die Handles klausel macht?

Aber nun gut, überlegen wir einmal.

1: Es wird ein Zeichen Gedrueckt, das heisst, wir lassen die textbox die Arbeit machen und akzeptieren das zeichen
2: Es wird eine Zahl eingegeben! Das heisst, wir klinken uns ein und übernehmen die Arbeit. Sprich wir stellen das zeichen nicht dar!
3: Es wird Enter gedrueckt. Wir machen das selbe wie bei 2, nur das wir kein Zeichen anzeigen sondern den Focus weiterschalten.

Klingt vlt. ein wenig problematisch. Ist es aber nicht :wink:

 Private Sub DeinObject(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles DeinObject.KeyPress
 Select Case e.KeyChar 'Wir fragen das Zeichen ab
 Case ChrW(13) 'Ist es Enter
 Button1.Focus() 'wir setzen den Focus auf Button1
 e.Handled = True 'Wir sagen dem Object das wir alles gemacht haben
 ' Das Object macht nun nichts weiter. Also auch kein Beep
 Case "0" To "9" 'Ist es eine Zahl
 e.Handled = True 'Wir sagen dem Object das wir alles gemacht haben
 'Wir stellen aber das Zeichen nicht dar!
 Case Else 'Ein zulaessiges Zeichen wird eingegeben
 e.Handled = False 'Wir sagen dem Object. Mach du mal. 
 'Es stellt automatisch das Zeichen dar
 End Select
 End Sub

Soweit alles klar? Wenn nicht dann befrage mal die Hilfe, über die Handled Eigenschaft eines Eventargs :wink:

MfG Alex, der bis zum WE nicht erreichbar ist.

Also das Programm soll so laufen:
ich gebe eine Zahl ein (der Code läuftja bei jeder Eingabe erneut ab)
diese wird anerkannt, jedes weitere Zeichen wird nicht eingegeben.Dieser Code soll dafür sorgen das der Anweder nur Zahlen eingeben kann.

Ich habe den Code erweiter so das Kommas,genau eins, eingesetzt werden können:

Private Sub txt1_KeyPress(ByVal sender As Object, ByVal e
As System.Windows.Forms.KeyPressEventArgs) Handles
txt1.KeyPress
Select Case e.KeyChar
Case „0“ To „9“, ChrW(Keys.Back)'Zahlen können eingegeben werden

Caqse"," , „.“
If Instr(txt1.Text,",") 0 then es darf nur ein Komma vorkommen
e.handled=true
else
e.Keychar=2,"," 'aus Punkt wird Komma
end if

Case ChrW(Keys.Return)'Bei drücken der Enter Taste wird nächstes Textfeld anfokusiert
txt2.Focus()'txt2 wird anfokusiert

Case Else
e.Handled = True 'alle anderen Zeichen werden nicht anerkannt
Beep()'fehlermeldung wird als Beep ton ausgegeben
End Select
End Sub

Soweit ich es in der Schule gelernt habe (ich bin momentan noch am lernen dieser Sprache) sorgt die Handles.Klausel dafür ob der COmputer das Zeichen einsetzen soll oder ob er uns das überlässt und da wir nichts tun wird das Zeichen nicht angezeigt.

Ich werde deinen Code anwenden wenns klappt, was ich denke, herzlichen dank

Mfg Linden

Wenn nur Zahlen eingegeben werden sollen, schau dir die MaskedTextBox an.

Grüße, JasonDelife.

das ist nicht das eigentliche Problem meine frage war wie kann ich den Ton beim weiterschlaten mit der ENTER Taste verhindern kann, gibt es eine Möglichkeit den Ton dafür zu deaktivieren?

Beispiel: (Bin nicht sicher, ob es geht)

Private Sub txtOBJEKT_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtOBJEKT.KeyPress
Select Case e.KeyChar
Case „0“ To „9“, ChrW(Keys.Back)

Case ChrW(Keys.Return)
cmdber.Focus()
e.SuppressKeyPress = True ’ Müsste den Beep bei Return unterdrücken
Case Else
e.Handled = True
Beep()
End Select
End Sub

danke nur ein Problem welchen Verweis muss ich hinzufügen?
Bei mir wird angezeigt das ein neuer Verweis von nöten ist.

Poste mal den Fehlertext.

„SuppresKeyPress“ ist kein Member von „System.Windows.Forms.KeyPressEvent Args“

ich bin selbst am suchen welcher Verweis diesen Befehl enthält.

Du musst es in KeyDown oder KeyUp machen.
Da kannst du über e.KeyData qauch direkt mit Keys.* vergleichen.

diese möglichkeit besteht aber key down und keyup ist bei sowas recht ungeschickt. er würde dann erst kontrollieren wenn der Benutzer erneut drückt oder die taste loslässt.
keydown erneutes drücken führt dann die FB aus
keyup nach dem drücken Problem wenn der anwender lange zeit draufbleibt wird keine FB durchgeführt.

Danke Linden

Ja, da hast du recht. Aber in KeyPress geht es glaube nicht.
Du kannst aber mal probieren das „SuppressKeyPress“ durch „Handled“ zu erstezten. Vllt. geht es dann.

Grüße, JasonDelife.

es klappt herzlichen dank.
e.handled=true
danke

Mfg Linden

Hallo Linden,

haettest du meinen Source mal studiert oder probiert, haettest du gemerkt das er eigentlich genau das macht. Auch habe ich dir versuchtzu erklären wozu handled da ist.

es klappt herzlichen dank.
e.handled=true
danke

MfG Alex

am anfang das war das merkwürdige hate es dafür gesorgt das ich wieder buchstaben einsetzen konnte. Daher hab ich es noch anderst versucht.
Ich danke euch beiden.

Mfg Linden