Zum Inhalt springen

String eingabe C#


The Pioneer

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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') );

...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)...

Link zu diesem Kommentar
Auf anderen Seiten teilen

...

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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;

    }                   


}                       

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...