Autor Beitrag
sharpx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 51



BeitragVerfasst: 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 user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Mi 07.01.2009 um 11:46
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 51



BeitragVerfasst: Mi 07.01.09 12:32 
Okay habe mich ejtzt soweit vorgearbeitet:

ausblenden 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)
      {
        // Enter gedrückt ...
      }
    }

    
    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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: 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? :roll: 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):
ausblenden 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.

user profile iconsharpx hat folgendes geschrieben Zum zitierten Posting springen:
Soweit ich das richtig einschätze, hilft mir hier nichts weiter?
msdn.microsoft.com/d...x_events(VS.80).aspx

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mi 07.01.09 12:39 
Es gibt auch noch andere Events außer TextChanged

[Edit]
Da war JüTho schneller
sharpx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 51



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 51



BeitragVerfasst: Mi 07.01.09 12:49 
Was ich mir zusammengereimt habe wäre folgendes:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 07.01.09 12:51 
Naja, fast. Du hast ja jetzt selbst gesucht, deshalb ;-): Wie wäre es mit KeyPress?
ausblenden C#-Quelltext
1:
2:
3:
4:
      private void tbx_KeyPress(object sender, KeyPressEventArgs e)
      {
          e.Handled = Convert.ToInt32(e.KeyChar) == 13;
      }
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: Mi 07.01.09 12:53 
user profile iconsharpx hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 51



BeitragVerfasst: Mi 07.01.09 12:55 
Funktioniert leider nicht...
Wenn ich ENTER drücke wird in der Textbox trotzdem der Umbruch angezeigt.
?
sharpx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 51



BeitragVerfasst: Mi 07.01.09 12:56 
user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconsharpx hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 51



BeitragVerfasst: Mi 07.01.09 13:12 
user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: Mi 07.01.09 13:14 
user profile iconsharpx hat folgendes geschrieben Zum zitierten Posting springen:
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. :roll:

Und wo bleibt die Lösung?

Jürgen
sharpx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 51



BeitragVerfasst: Mi 07.01.09 13:16 
ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 51



BeitragVerfasst: Mi 07.01.09 13:22 
Hab mir das jetzt mal über den Designer automatisch erstellen lassen.

ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 07.01.09 13:22 
user profile iconsharpx hat folgendes geschrieben Zum zitierten Posting springen:
Ich verwende eine RichTextBox, das stimmt.
:autsch: :autsch: :autsch:

Warum schreibst du das denn nicht gleich? Anders als bei einer normalen TextBox funktioniert das über KeyPress dort nicht...

Das Problem dabei ist, dass das Enter bereits nach KeyDown eingetragen wird, KeyPress und KeyUp folgen danach. bei einer RichTextBox geht es also so:
ausblenden C#-Quelltext
1:
2:
3:
4:
        private void richTextBoxX_KeyDown(object sender, KeyEventArgs e)
        {
            e.Handled = Convert.ToInt32(e.KeyCode) == 13;
        }
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: Mi 07.01.09 14:22 
... wobei mir sharpx' Vergleich besser gefällt:
ausblenden 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