C# Eingabe von Buchstaben verhindern

Gast #1815468
Lesenswert?

Hallo.

Ich arbeite mit Microsoft Visual C# 2010 und bin ganz neu in der 
Programmierg. Ich möchte eine einfache Eingabe von 2 Zahlen ermöglichen 
die dann addiert werden. Das Ergebnis wird in einem separaten Fenster 
angezeigt.

Ich habe dazu zwei Edit Felder für die Eingabe erstellt. Wie verhindere 
ich nun, dass Buchstaben eingegeben werden können (bzw. wenn nichts rein 
geschrieben wird)?

Ich habe noch eine Button eingefügt. Bei dessen Betätigung wird die 
Addition ausgeführt. Wird diese betätigt, ohne das etwas eingegbene 
wurde oder Buchstaben eingegeben wurde, hält das Programm an.

Kann mir jemand weiter helfen.
Danke
Gast #1815474
Lesenswert?

dafür könnte man das onChange event verwenden, wenn dort ein Buchstabe 
drin steht musst du ihn einfach wieder loeschen. Das OnKey event ist 
nicht sinnvoll weil sonst könnte jemand dort text per maus einfügen.
#1815547
Lesenswert?

Peter schrieb:
> dafür könnte man das onChange event verwenden, wenn dort ein Buchstabe
> drin steht musst du ihn einfach wieder loeschen. Das OnKey event ist
> nicht sinnvoll weil sonst könnte jemand dort text per maus einfügen.

Entweder so, oder statt der TextBox ein NumericUpDown verwenden...
Zusätzlich kann man auch noch 
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.validating.aspx 
einsetzen.
Gast #1816576
Lesenswert?

Was du dir für zukünftige Anfragen merken kannst: Du brauchst keine 
Infos zu C# sondern Windows Forms. Das ist ein Unterschied der wichtig 
ist wenn sich aus der Frage nicht so leicht ersehen lässt um welches 
Framework es denn nun geht.
Gast #1816799
Lesenswert?

Ich danke euch sehr für diese Tipps. Leider weiß ich trotzdem nicht wie 
meine Code aussehen muss.
Wenn ich beispielsweise bei der Eingabe in meine TextBox1 beim 
Tastendruck eines Buchstaben die Eingabe anfagneg will, wie muss die 
Syntax aussehen. Ich weiß das ich bei Doppelklich auf das Event meines 
Elements (TextBox1) doppelt klicke, dass dann eine Funktion angelegt 
wird. Dort kann ich die Eingabe eines Buchstaben abfangen.

Aber wie, ich weiß nicht was ich abfragen soll?
#1817048
Lesenswert?

Mach es doch einfach so:

Du nimmst das OnChangeEvent der textbox:
1
int old1 = 0; //alten Wert speichern
2
void textbox1_OnChange(object sender, Eventargs e)
3
{
4
try
5
{
6
   old1 = Convert.ToInt32(textBox1.Text);
7
}
8
catch(Exception{ textBox1.Text = old1.ToString(); }
9
}
10
//Ungetestet

Du konvertierst den Text in eine Zahl. Wenn das nicht geht wird eine 
Ausnahme ausgelöst und abgefangen, in der die alte Zahl in die TextBox 
geschrieben wird.

EDIT: Oder nimm die MaskedTextBox
Gast #1819364
Lesenswert?

Alles was bisher genannt wurde wär mir zu umständlich. Mit dem KeyUp 
oder KeyDown Event kann man prüfen welcher Key eingegeben wurde und auch 
verhindern das er in die Box geschrieben wird. Da vom Key-Wert 0-9 
hintereinander liegen geht sogar eine

if(Key >= 0 && Key <= 9)

Konstruktion
Gast #1819370
Lesenswert?

Martin schrieb:
> Alles was bisher genannt wurde wär mir zu umständlich. Mit dem KeyUp
> oder KeyDown Event kann man prüfen welcher Key eingegeben wurde und auch
> verhindern das er in die Box geschrieben wird.

nein kann man nicht, weil man auch text einfügen kann. z.b. mit der 
rechte maustaste. Dabei kommt kein KeyDown event!
#1821831
Lesenswert?

Sorry aber...
früher haben wir noch programmiert...
heute hat man das Problem das richtige Drop down oder Pop Up Menü zu 
finden und sich dort mit dem richtigen Eintrag einen Methodenrumpf 
generiern zu lassen der dann noch nicht mal von alleine das tut was man 
will :-)
Kopfschüttel...
Trotzdem noch viel Spass :-)
#1822058
Lesenswert?

Was hat das denn mit meinem Alter zu tun? Darf man ein eigenes 
Schachengine erst ab 40 programmieren? Das Alter hat damit doch 
überhaupt nichts zu tun. Glaubst du das Alter bestimmt die Wertigkeit 
von Beiträgen? Womit willst du das Begründen? Mit der Erfahrung? Dieser 
Thread war eine reine Wissenfrage!

Wenn ihr das Rad 2mal erfinden wollt, bitte schön. Aber wenn ihr dann 
noch eine Frage habt, leg ich euch eine Tabelle mit Assembler Befehlen 
hin, mit der ihr dann mal eure ZahlenTextBox schreiben könnt (geht dann 
leider nicht mehr in c#).

Ich glaube vc# hat seine umfangreiche ToolBox nicht zum anschauen.
#3688651
Lesenswert?

Warum einfach, wenn's auch kompliziert geht? ;-)

Arc Net schrieb:
> Entweder so, oder statt der TextBox ein NumericUpDown verwenden...

Da hst du doch schon die Lösung gehabt...
Die TextBox ist nicht unbedingt für die Eingabe von Zahlen gedacht. Von 
daher beherzige doch bitte obigen Ratschlag und verwende ein 
Numeric-Control. Dann brauchst du dich auch nicht weiter um Code zur 
validierung kümmern...
Gast #3689014
Lesenswert?

Wer hat das denn aus dem Grab geholt?

Jonas Biensack schrieb:
> textbox.text = int.TryParse(textbox1.text);

TryParse ist zwar an sich eine bessere Idee als try/catch mit Parse, 
aber so funktioniert es sicher nicht.

public static bool TryParse(string s, out int result)

Außerdem wollte der TO (vor ein paar Jahren ...) die Eingabe von Zahlen 
blockieren, nicht eine Messagebox anzeigen.

Bitte benutzt für so etwas ein passendes Control, ob nun von MS oder 
sonst jemandem; solche Anforderungen hatten schon ein paar 
(Fantastillionen) Leute vor euch. Es ist zwar keine Quantenmechanik, 
aber auch nicht ganz so trivial, wie es hier dargestellt wird. U.a. muss 
Copy & Paste korrekt behandelt werden.

Möge der Thread nun in Frieden ruhen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren