2009-05-20 25 views
3

Ich brauche Hilfe mit meinem Code. Ich möchte nur Zahlen/Ganzzahlen in mein Textfeld schreiben und möchte das in meiner Listbox anzeigen.Konvertiere String in Integer

Ist mein Code unten in Reihenfolge? Dies scheint einen Fehler zu geben.

int yourInteger; 
    string newItem; 

    newItem = textBox1.Text.Trim(); 

    if (newItem == Convert.ToInt32(textBox1.Text)) 
    { 
     listBox1.Items.Add(newItem); 
    } 

==== Update:

Dies ist, wie mein Code wie jetzt aussieht. Meine Frage ist, kann listBox mit dem Datentyp "long" umgehen? Denn als ich die Zahl 20.000.000 eingegeben habe, habe ich 20 Minuten lang eine Stunde Glas bekommen. Aber als ich dieses mit der Konsole probierte, bekam ich die Antwort. Ich bin mir also nicht sicher, welche Art von Element mit dem Datentyp "long" umgehen kann.

string newItem; 
    newItem = textBox1.Text.Trim(); 

    Int64 num = 0; 
    if(Int64.TryParse(textBox1.Text, out num)) 
    { 
     for (long i = 2; i <= num; i++) 
     { 
      //Controls if i is prime or not 
      if ((i % 2 != 0) || (i == 2)) 
      { 
       listBox1.Items.Add(i.ToString()); 
      } 

     } 
    } 


    private void btnClear_Click(object sender, EventArgs e) 
    { 
     listBox1.Items.Clear(); 
    } 

Antwort

3

Verwendung:

int yourInteger; 
    string newItem; 

    newItem = textBox1.Text.Trim(); 
    Int32 num = 0; 
    if (Int32.TryParse(textBox1.Text, out num)) 
    { 
     listBox1.Items.Add(newItem); 
    } 
    else 
    { 
     customValidator.IsValid = false; 
     customValidator.Text = "You have not specified a correct number"; 
    } 

Dies vorausgesetzt, dass Sie eine CustomValidator haben.

+0

das funktioniert ck. aber das Problem ist: Wenn ich Zeichen eintippe, gibt es mir keine Nachricht oder es gibt keinen Fehler. Kann man hier auch das "Versuch und Fangen" integrieren? – tintincutes

+0

Bearbeitet, um Feedback zu enthalten – cjk

+0

Was ist ein customValidator? – tintincutes

14
int result = int.Parse(textBox1.Text.Trim()); 

Wenn Sie auf ihre Gültigkeit überprüfen wollen:

int result; 
if (int.TryParse(textBox1.Text.Trim(), out result)) // it's valid integer... 
    // int is stored in `result` variable. 
else 
    // not a valid integer 
+0

hallo Mehrdad, ich bin nicht sicher, wie dies zu tun in meinem Code. Vielleicht könntest du mir helfen. Danke – tintincutes

+0

Es ist kein Problem mit lang. Sie machen eine sehr zeit- und speicherintensive Operation. Das Schreiben in die Konsole erfordert kein Aktualisieren eines GUI-Objekts mit vielen Elementen. Im Grunde zeigen Sie Millionen von Elementen in einer Listbox an, die keinen wirklichen Nutzen hat (wer kann durch solch eine lange Liste scrollen?) Und verbraucht viele Ressourcen. –

+0

Hi Mehrdad das ist nur ein Testprogramm zum Lernen.Danke für den Hinweis – tintincutes

1

Verwenden int.TryParse() zu überprüfen, ob String-Integer-Wert enthält. diese

-1

Suchen Sie nach einer leeren Zeichenfolge?

int yourInteger; 
string newItem; 
newItem = textBox1.Text.Trim(); 

if(newItem != string.Empty) 
{ 
    if (newItem == Convert.ToInt32(textBox1.Text)) 
    { 
     listBox1.Items.Add(newItem); 
    } 
} 
+1

danke Pat, ich habe es versucht Ich erhalte einen Fehler: "kann Operator '==' nicht auf Operanden vom Typ 'string' & 'int' anwenden – tintincutes

0

textBox1.Text möglicherweise nicht eine gültige Zeichenfolge Darstellung einer ganzen Zahl enthalten (oder ist nur eine leere Zeichenkette). Um dies zu umgehen, verwenden Sie Int32.TryParse().

0

Sie tun können:

Convert.ToInt32(input); 

Für eine längere Funktion dieser Sie können aussehen: http://msdn.microsoft.com/en-us/library/bb397679.aspx

Grundsätzlich prüft sie, ob die Zeichenfolge null ist, dann wird es int.Parse nennen. Dies funktioniert auch unter WindowsCE, welches nicht über int.TryParse verfügt.

0

Um genauer zu sein, warum Ihr Code nicht kompiliert werden kann, weil Sie einen String (newItem) mit dem Ergebnis von Convert.ToInt32 vergleichen, was eine Integer ist, die Sie nicht tun können. Außerdem wird Convert.ToInt32 eine Ausnahme auslösen, wenn die übergebene Zeichenfolge keine Zahl ist.

Sie können versuchen, int.TryParse, oder alternativ mit einem einfachen regulären Ausdruck schreiben Sie Ihre Eingabe zu bestätigen:

int i; 
bool isInteger = int.TryParse(textBox1.Text,out i); 

oder

bool isInteger = System.Text.RegularExpressions.Regex.IsMatch("^\d+$", textBox1.Text);