Laden...

Tasten blcokieren

Erstellt von Son Goku vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.985 Views
S
Son Goku Themenstarter:in
41 Beiträge seit 2005
vor 18 Jahren
Tasten blcokieren

Hi

ich hab da ein kleines Problem.

Ich hab verschiedene Textboxen, in die immer nur Zahlen eingetragen bzw. gelöscht werden dürfen.
Jetzt hab ich aber das Problem, dass ich net weiß, wie ich die anderen Tasten blockieren kann.

Das geht doch mit ASCII-Code. Oder?
Folgendes hab ich schon:

if((e.KeyValue < 96 || e.KeyValue > 105) && e.KeyValue != 8)

Nur was muss ich schreiben, damit keine Ausgabe erfolgt?
Und meine zweite Frage: Sind die Zahlen von 0 bis 9 nicht normal die ASCII-Zeichen 48 bis 57?

Ich hoffe mir kann jemand helfen.

Danke

Son Goku

1.271 Beiträge seit 2005
vor 18 Jahren

Du solltest nicht schon bei der Eingabe überprüfen, ob die Eingabe korrekt ist! Das gibt verschiedenen Probleme (z.B. mit Dezimaltrennzeichen, Einfügen, ...)!
Lass lieber dem Nutzer alle Freiheiten der Eingabe, und zwinge ihn erst beim Klick auf "Übernehmen" (o. ä.) zu der Eingabe eines korrekten Wertes.

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

S
Son Goku Themenstarter:in
41 Beiträge seit 2005
vor 18 Jahren

Normal mache ich das ja auch immer so, nur in diesem speziellen Fall ist es so erforderlich.

59 Beiträge seit 2005
vor 18 Jahren

Hallo Son Golu,

um die Sache zu vereinfachen kann man die Methode char.IsDigit verwenden.
In deinem speziellen Fall könnte das so aussehen:

 
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
   if (char.IsDigit(e.KeyChar) == false)
   {
      e.Handled = true;
   }
}

Auf MSDN gibt es einen netten WebCast von Bernd Marquardt über das Thema:
[URL] [/URL]

HoGi

[Edit]
Sorry, ich hatte das Löschen vergessen, vielleicht besser so:

 
if(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar)) {  
  e.Handled = false;
}
else {
  e.Handled = true;
}



2b | !2b = 0xff

S
Son Goku Themenstarter:in
41 Beiträge seit 2005
vor 18 Jahren

Danke! Ich schau mir das mal an.

Gibts auch ne Funktion isNumeric, wie bei VBA?

1.271 Beiträge seit 2005
vor 18 Jahren

char.IsNumber sagt dir, ob ein Zeichen eine Nummer ist. Strings musst du über int/float/double.TryParse überprüfen. Such dazu einfach mal nach "TryParse" im Forum, da gibt es schon viele Fragen und Antworten.

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

59 Beiträge seit 2005
vor 18 Jahren

Gibts auch ne Funktion isNumeric, wie bei VBA?

Soweit mir bekannt ist nicht. Das gleiche kannst du aber mit den die Methoden Parse
bzw. TryParse (in .NET 2.0) erreichen, die in den Standarddatentypen implementiert
sind.

Gruß

HoGi

[Edit]

Ups, da war jemand schneller 😉

2b | !2b = 0xff

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Son Goku,

Tasten blockieren ist ein schlechter Weg. Siehe z.B. Nur Zahlen und Sonderzeichen .

herbivore

S
Son Goku Themenstarter:in
41 Beiträge seit 2005
vor 18 Jahren

danke. werd mir das alles mal ansehen

S
Son Goku Themenstarter:in
41 Beiträge seit 2005
vor 18 Jahren

hat alles hingehauen, danke nochmal.

aber jetzt hab ich noch ne frage. man kann jetzt noch nicht.numerische Werte über das Kontextmenü einfügen. Wie könnte ich das sperren, bzw. die Aktion ins leere laufen lassen?
jemand ne Idee. Hab leider noch kein Thema gefunden, was sich damit befasst hat.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Son Goku,

ich sagte ja, dass es nicht gut ist zu versuchen, Tasten zu blockieren. Meine Klasse in dem anderen Thread kann dagegen genau, was du willst.

Hab leider noch kein Thema gefunden, was sich damit befasst hat.

Schade, dass du nicht mal meinem Link gefolgt bist.

herbivore

S
Son Goku Themenstarter:in
41 Beiträge seit 2005
vor 18 Jahren

Doch ich bin ihm gefolgt, aber nur bis zum 3. Post, weil da mein probkem bereits gelöst war. 😁
Ich werd mich bemühen das nächste Mal alles zu lesen.

Aber ich schau es mir mal an.