2012-04-11 5 views
-1
Min = Convert.ToInt32(cbMin.SelectedItem); 

Hier ist mein Problem, mit dieser Zeile aus der Combobox in die Integer-Variable zu konvertieren. Gerade jetzt, wenn ich "00" oder "05" aus meinem Drop-Down wählen, erscheint der Wert nur als "0" oder "5" Es scheint nur zu passieren, wenn eine Zahl mit einer "0" beginntKonvertieren von Combobox zweistellig in int zweistellig

Am i etwas vermissen?

PS: Als ich die Combobox eingerichtet habe, habe ich gerade den Eigenschaftsbereich auf der Seite benutzt und die Sammlung ausgefüllt. Ich wollte nur sicher sein, dass ich das da rausgeworfen habe.

+2

Ich bin verwirrt. Willst du damit sagen, dass du nicht möchtest, dass "05" in "5" umgewandelt wird? Wenn nicht, was erwartest du? – Gabe

+2

Wofür verwenden Sie den Wert in 'Min'? Wenn Sie nur den numerischen Wert benötigen, dann ist 05 = 005 = 000005 = 5. Wenn Sie die führende 0 für Anzeigezwecke benötigen, verwenden Sie 'ToString()' anstelle von 'Convert.ToInt32()'. –

+0

Was zum Teufel ist eine "int double" Ziffer genau? Meinst du zufällig ein Doppel, das eine ganze Zahl ist? –

Antwort

2

nicht Wert integer konvertieren, wenn Sie Null Verwendung von String-

wollen führende diese
i.ToString("00") 

ausprobieren soltuon wird für Sie arbeiten

endgültige Code ist

string s = (Rechnen. ToInt32 (cbMin.SelectedItem)). ToString ("00")

EDIT

wenn Sie alredy assinged valeu mit 0, als Sie gerade

schreiben müssen
string Min = cbMin.SelectedItem.ToString(); 
2

Ganze Zahlen haben keine führende Nullen. Sie sind numerische Datentypen. Die führende Null ist nur in einem String-Datentyp möglich.

  • int 0 ist nicht das gleiche wie Zeichenfolge „0“
  • int 1 ist nicht das gleiche wie Zeichenfolge „1“

Wenn Sie den Wert zur Ausgabe mit der führenden 0 benötigen, und benutze es nie in mathematischen Formeln, du solltest es als String behalten. Konvertiere es nicht zuerst in ein int.

Wenn Sie es als Integer benötigen, um Berechnungen durchzuführen, müssen Sie es in ein int konvertieren, aber an Stellen, wo Sie die führende Null benötigen, formatieren Sie es. Konvertieren Sie es zurück in eine Zeichenfolge und verwenden Sie die Datenformatierung, um die führende Null zu erhalten.

"1".ToString("00") wird in "01" resultieren.

"15".ToString("00") wird in "15" resultieren.

Weitere Informationen zum Formatieren numerischer Datentypen finden Sie in der Dokumentation here und in den benutzerdefinierten Zahlenformatzeichenfolgen (wie in meinen Beispielen oben gezeigt) here.

+0

Mir war nicht bewusst, dass führende Nullen nur im String-Datentyp möglich waren. Danke für die Info! –

1

Es gibt keinen Sinn machen eine ganze Zahl 5 als 05 in C#. Aber wenn ein String wollen dieses Format hat, können Sie tun:

string Min = Convert.ToInt32(cbMin.SelectedItem).ToString("00"); 

Oder

string Min = String.Format("{0:0#}", Convert.ToInt32(cbMin.SelectedItem));