The Pioneer Geschrieben 19. Januar 2006 Teilen Geschrieben 19. Januar 2006 Hallo zusammen ich hoffe es kann mir jemand helfen. Bin gerade dabei einen Taschenrechner zu programmieren. Nun will ich das so machen, dass der Benutzer via textBox etwas eingeben kann. Da beginnt soeben mein Problem. Möchte natürlich nicht dass er volle freie Wahl hat sondern nur was ich ihm vorgebe. z.b wenn er im Menu Umrechnen ist, d.h z.b von Binär in Dezimal sollte er nur "0" und "1" eingeben konnen. So wie ich das bis jetzt programmiert habe kann er alles eingeben, d.h auch Buchstaben. Wenn er natürlich einen solchen Buchstaben eingiebt schmiert mir das Programm ab. Besten dank jetzt schon für eure Hilfe... PS: habe das Programm in Visual Studio 2005 unter C# laufen, sommit bitte C# Tipps. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Melkor Geschrieben 20. Januar 2006 Teilen Geschrieben 20. Januar 2006 Wie wärs mit einer Abfrage nach der Eingabe des Users, ob das eingegebene Zeichen eine 1 oder eine 0 ist. Sollte dies dann nicht der Fall sein könnte man eine Nachricht ausgeben, in der auf die falsche Eingabe hingewiesen wird und der User gebeten wird die Eingabe zu wiederholen. Quelltext könnte so aussehen: ... char Puffer; do { getch(Puffer); if ( (Puffer != '1') && (Puffer != '0') ) { cout << "Sie haben eine falsche Eingabe getätigt. Es werden nur 1 und 0 akzeptiert"; } } while ( (Puffer != '0') && (Puffer != '1') ); ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
The Pioneer Geschrieben 20. Januar 2006 Autor Teilen Geschrieben 20. Januar 2006 Danke für die schnelle Antwort, diese Variante hatte ich im ersten Schritt so gemacht. Im zweiten Schritt möchte ich wirklich dass der Benutzer nur die Tasten "0" und "1" drücken kann, bzw. die anderen Tasten in der textBox nicht angezeigt werden... Gruss Roger Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Melkor Geschrieben 20. Januar 2006 Teilen Geschrieben 20. Januar 2006 das problem ist, dass ich mich mit dem visual studio nicht auskenne. aber es gibt doch bestimmt einen befehl der die anderen felder deaktiviert oder du läßt die Abfrage einfach so laufen ohne meldung. dann wird die eingabe ja sooft wiederhohlt, dass der anwender da nichts von mitbekommen sollte. wenn er was falsches eingibt muss er es einfach noch einmal versuchen bis er die passenden zahlen eingibt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
The Pioneer Geschrieben 20. Januar 2006 Autor Teilen Geschrieben 20. Januar 2006 hmm, ja wäre eine andere Variante, nur leider nicht so komfortabel für den Benutzer. Leider habe ich den Befehl noch nicht gefunden... Ein teile habe ich breits ausfindig machen können, nur kann ich das noch nicht richtig implementieren: private static string EnterNumber(string caption, string prompt, string legalChars, int maxLength, bool makeUpperCase) { string result; do { result = [B]iGUIUtils[/B].Prompt(caption, prompt, "", legalChars, maxLength, makeUpperCase); } while (result != null && result.Length == 0); return result; } und dann der aufruf: string numberString = EnterNumber("Enter Binary Number", "Number:", "01", 64, false); if (numberString != null) { result = new Integer(numberString, Integer.NumericBase.Binary); } return result; } leider gibt es bei mir bei iGUIUtils (im ersten Code Block) ein Fehler dass er dieses Key Word nicht findet. Laut original Code hat er ein using CSPCUti und ein using ICSPCAPI die bei mir aber beide nicht erkennt werden oder ein falscher Assambly aufweis zeigt (meldet der Compiler)... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigredeyes Geschrieben 20. Januar 2006 Teilen Geschrieben 20. Januar 2006 ... leider gibt es bei mir bei iGUIUtils (im ersten Code Block) ein Fehler dass er dieses Key Word nicht findet. Laut original Code hat er ein using CSPCUti und ein using ICSPCAPI die bei mir aber beide nicht erkennt werden oder ein falscher Assambly aufweis zeigt (meldet der Compiler)... hast du die CSPCUtil.dll korrekt in dein projekt eingebunden? bigredeyes Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
The Pioneer Geschrieben 20. Januar 2006 Autor Teilen Geschrieben 20. Januar 2006 hmm, jetzt wo du das erwähnst... nein diese DLL habe ich nicht eingebunden...Wo muss ich diese denn platzieren? und gibt es eine Möglichkeit diese DLL Datei zu editieren oder anzuschauen? Danke für deinen Tipp! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigredeyes Geschrieben 20. Januar 2006 Teilen Geschrieben 20. Januar 2006 irgendwie auf das projekt klicken und "assambly hinzufügen", dann bei "externe" hinzufügen. sorry für ungenauigkeit, aber hier hab ich kein visual studio. oder: google : c# dll bigredeyes Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
The Pioneer Geschrieben 22. Januar 2006 Autor Teilen Geschrieben 22. Januar 2006 Habe jetzt trotzdem die Variante von Melkor genommen, die mit dem eingabe string prüfen...das andere habe ich leider nicht rausgefunden. jetzt stellt sich noch mein letztes "grosses" problem: will jetzt noch eine kleine funktion schreiben die Mathematische Gleichungen (linerar, evt Gleichungssysteme) lösen kann. Hat von euch schon jemand Erfahrung damit? Wäre cool wenn mir jemand einen Tipp geben könnt wie ich das am produktivsten anpacken kann. Besten Dank jetzt schon wieder Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Trux Geschrieben 28. Januar 2006 Teilen Geschrieben 28. Januar 2006 Kannst im Event von dem Text-Feld direkt die eingegebenen Taste der Tastatur abfragen, und gegebenenfalls blocken. So kann der Benutzer in diesem Beispiel nur ein validen Double-Wert eingeben bool blnAcceptKey = true; <<PreviewKeyDown Event>> { blnAcceptKey = true; // Determine whether the keystroke is a number from the top of the keyboard. if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9 ) { // Determine whether the keystroke is a number from the keypad. if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9) { if (e.KeyCode != Keys.Oemcomma || <<TextFeld>>.Text.Contains(",")) { if (e.KeyCode != Keys.Decimal || <<TextFeld>>.Text.Contains(",")) { // Determine whether the keystroke is a backspace. if (e.KeyCode != Keys.Back) { // A non-numerical keystroke was pressed. // Set the flag to false and evaluate in KeyPress event. blnAcceptKey = false; } } } } } } <<KeyPress Event>> { // Check for the flag being set in the KeyDown event. if (!blnAcceptKey) { // Stop the character from being entered into the control since it is non-numerical. e.Handled = true; } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
The Pioneer Geschrieben 29. Januar 2006 Autor Teilen Geschrieben 29. Januar 2006 ja so ähnlich habe ich jetzt auch gemacht...ist die beste und komfortabelste lösung... gruss Roger Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.