| Autor |
Beitrag |
sharpx
      
Beiträge: 51
|
Verfasst: Mi 07.01.09 12:15
Hallo,
Angenommen ich habe eine Textbox welche ich durch tbx ansprechen kann.
Ist es nun möglich zu prüfen, ob ein User "ENTER" drückt und dies zu unterbinden?
Das Ganze sollte aber sofort ablaufen, also sprich der Benutzer tippt in die Textbox, sobald er auf ENTER drückt, kommt ein kleiner Fehler: "Diese Taste ist nicht erlaubt" und ENTER wird auch nicht in der Textbox dargestellt.
Danke für Eure Hilfen Moderiert von Christian S.: Topic aus C# - Die Sprache verschoben am Mi 07.01.2009 um 11:46
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 07.01.09 12:22
Schon einmal etwas davon gehört, dass NET mit Ereignissen arbeitet? Schon einmal in der SDK-Doku/MSDN geblättert, welche Ereignisse eine TextBox kennt? Schon einmal die dazugehörigen Beschreibungen gelesen? Und weißt Du, dass "Taste" auf englisch "Key" heißt?
Etwas mehr Eigeninitiative bitte! Jürgen
PS. Ich kann verstehen, wenn Du die konkrete Frage "Enter im Ereignis xxx unterdrücken" nicht beantworten kannst. Aber bis dorthin musst Du selbst kommen.
|
|
sharpx 
      
Beiträge: 51
|
Verfasst: Mi 07.01.09 12:32
Okay habe mich ejtzt soweit vorgearbeitet:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| private void kp(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (e.KeyChar == (char)13) { } }
void RtTextChanged(object sender, EventArgs e) { this.rt.KeyPress += new KeyPressEventHandler(kp); } |
Kannst du mir einen Tipp geben wie man das ENTER drücken unterbindet?
Sprich dass in der Textbox nichts angezeigt wird?
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 07.01.09 12:38
Es gibt vielleicht noch das eine oder andere Ereignis, mit dem was zu machen wäre. Was meinst Du wohl, warum ich auf die Übersetzung "Key" hingewiesen habe? Jürgen
Na, geht doch!
Nun musst Du nur noch die EventHandler (Ereignisbehandlungsmethoden) richtig zuordnen:
Diese Zeile gehört nach InitializeComponents, am besten in die Designer.cs (ich verstehe sowieso nicht, warum Du das nicht durch den Designer erzeugen lässt, aber das ist unwichtig):
C#-Quelltext 1:
| this.rt.KeyPress += new KeyPressEventHandler(kp); |
Dann sollten rt und kp "vernünftige" Namen bekommen.
Dann fehlt nur noch das, was ich schon als PS genannt hatte. Die Lösung dazu steht in der SDK-Doku/MSDN im Beispiel zu KeyPressEventHandler-Delegat.
Tja, es gibt offensichtlich Unterschiede zwischen WinForms und WebForms. Wenn Du richtig lesen würdest, hättest Du die Frage im richtigen Forum gestellt (Windows Forms oder ASP.NET), und wir würden keine unpassenden Antworten geben.
Bitte sage genau, wofür Deine Frage gilt! Jürgen
Zuletzt bearbeitet von JüTho am Mi 07.01.09 12:50, insgesamt 1-mal bearbeitet
|
|
bakachan
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: Mi 07.01.09 12:39
Es gibt auch noch andere Events außer TextChanged
[Edit]
Da war JüTho schneller
|
|
sharpx 
      
Beiträge: 51
|
Verfasst: Mi 07.01.09 12:42
Soweit ich das richtig einschätze, hilft mir hier nichts weiter?
msdn.microsoft.com/d...x_events(VS.80).aspx
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 07.01.09 12:48
Du guckst Dir die Komponente im falschen Namespace an, der richtige wäre System.Windows.Forms
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
sharpx 
      
Beiträge: 51
|
Verfasst: Mi 07.01.09 12:49
Was ich mir zusammengereimt habe wäre folgendes:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7:
| private void tbx_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { e.SuppressKeyPress = true; } } |
Jedoch funktioniert dies nicht.
Sollte das eigentlich nicht korrekt sein?
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 07.01.09 12:51
Naja, fast. Du hast ja jetzt selbst gesucht, deshalb  : Wie wäre es mit KeyPress? C#-Quelltext 1: 2: 3: 4:
| private void tbx_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = Convert.ToInt32(e.KeyChar) == 13; } |
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 07.01.09 12:53
sharpx hat folgendes geschrieben : | Jedoch funktioniert dies nicht.
Sollte das eigentlich nicht korrekt sein? |
Bitte lies Dir meine obige (überarbeitete) Antwort nochmal durch, damit wir nicht aneinander vorbeireden. Jürgen
Komisch, oben hatte er schonmal KeyPress verwendet. Dann nimmt er KeyDown, springt zwischen WinForms und WebForms hin und her; vielleicht hat er sogar eine RichTextBox (wegen des Namens rt). Er könnte uns die Hilfe wirklich etwas erleichtern.
|
|
sharpx 
      
Beiträge: 51
|
Verfasst: Mi 07.01.09 12:55
Funktioniert leider nicht...
Wenn ich ENTER drücke wird in der Textbox trotzdem der Umbruch angezeigt.
?
|
|
sharpx 
      
Beiträge: 51
|
Verfasst: Mi 07.01.09 12:56
JüTho hat folgendes geschrieben : | sharpx hat folgendes geschrieben : | Jedoch funktioniert dies nicht.
Sollte das eigentlich nicht korrekt sein? |
Bitte lies Dir meine obige (überarbeitete) Antwort nochmal durch, damit wir nicht aneinander vorbeireden. Jürgen
Komisch, oben hatte er schonmal KeyPress verwendet. Dann nimmt er KeyDown, springt zwischen WinForms und WebForms hin und her; vielleicht hat er sogar eine RichTextBox (wegen des Namens rt). Er könnte uns die Hilfe wirklich etwas erleichtern. |
Ich dachte KeyDown und Key Press ist im Prinzip das selbe, habe mich da aber nochmals eingelesen, ist es nicht - mein Fehler!
Ich verwende eine RichTextBox, das stimmt.
Und als Referenz habe ich das hie rgenommen:
msdn.microsoft.com/d...keypress(VS.80).aspx
lg
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 07.01.09 13:09
Na, dann bist Du fast am Ende!
Benutze Deine if-Abfrage aus Deinem früheren Versuch mit KeyPress und den Lösungshinweis von Sebastian Jaenicke.
Jürgen
PS. Ich hoffe, Du ziehst die Lehre aus diesem Hin und Her und gibst künftig von Anfang an klare und eindeutige Hinweise im richtigen Unterforum.
|
|
sharpx 
      
Beiträge: 51
|
Verfasst: Mi 07.01.09 13:12
JüTho hat folgendes geschrieben : | Na, dann bist Du fast am Ende!
Benutze Deine if-Abfrage aus Deinem früheren Versuch mit KeyPress und den Lösungshinweis von Sebastian Jaenicke.
Jürgen
PS. Ich hoffe, Du ziehst die Lehre aus diesem Hin und Her und gibst künftig von Anfang an klare und eindeutige Hinweise im richtigen Unterforum. |
Es handelt sich doch um das richtige Forum?
Die Frage bezieht sich ja auf Windows.Forms...
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 07.01.09 13:14
sharpx hat folgendes geschrieben : | Es handelt sich doch um das richtige Forum?
Die Frage bezieht sich ja auf Windows.Forms... |
Nachdem Christian es verschoben hat. Du hast die Frage in "C# die Sprache" gestellt und zwischendurch einen Link auf WebForms benutzt.
Und wo bleibt die Lösung?
Jürgen
|
|
sharpx 
      
Beiträge: 51
|
Verfasst: Mi 07.01.09 13:16
C#-Quelltext 1: 2: 3: 4: 5: 6: 7:
| private void rt_KeyPress(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { e.Handled = true; } } |
Funktioniert jedoch leider nicht.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 07.01.09 13:20
Hast Du den Event-Handler über den Formdesigner automatisch erstellen lassen, oder manuell im Texteditor. Falls letzteres zutrifft, hast Du den Event-Handler auch dem Event zugewiesen?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
sharpx 
      
Beiträge: 51
|
Verfasst: Mi 07.01.09 13:22
Hab mir das jetzt mal über den Designer automatisch erstellen lassen.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| void rt_keypress(object sender, KeyPressEventArgs e) { if (e.KeyCode == Keys.Enter) { MessageBox.Show("d"); e.Handled = true; } } |
Jedoch:
| Zitat: |
System.Windows.Forms.KeyPressEventArgs enthält keine Definition für KeyCode. (CS0117) - C:\Dokumente und Einstellungen\lipo\Eigene Dateien\SharpDevelop Projects\pdfinside\Form3.cs:161,10
|
EDIT:
Mein Fehler wenn ich den KeyDown Event nehme funktionierts:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| void rt_keydown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { MessageBox.Show("d"); e.Handled = true; } } |
Danke für eure Hilfen!
Zuletzt bearbeitet von sharpx am Mi 07.01.09 13:24, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 07.01.09 13:22
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 07.01.09 14:22
... wobei mir sharpx' Vergleich besser gefällt:
C#-Quelltext 1:
| e.Handled = e.KeyCode == Keys.Enter; |
(zumal ich das Convert.ToXxx sowieso vermeide; hier würde auch (int) genügen).
Jürgen
|
|