Convertir cadena a int c #

Estoy tratando de convertir una cadena de entrada en un int. He intentado int.parse e int.parse32 pero cuando presiono “enter” obtengo el siguiente error:

System.FormatException: Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer & number...." 

clase parcial Form1:

 this.orderID.Text = currentID; this.orderID.KeyPress += new KeyPressEventHandler(EnterKey); 

clase parcial Form1: Forma:

  public int newCurrentID; private void EnterKey(object o, KeyPressEventArgs e) { if(e.KeyChar == (char)Keys.Enter) { try { newCurrentID = int.Parse(currentID); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } e.Handled = true; } } 

La cadena es inmutable, por lo tanto, cuando asigne currentID al cuadro de texto, cualquier cambio de ese texto no se reflejará en la variable currentID

 this.orderID.Text = currentID; 

Lo que debe hacer en la función EnterKey es usar el valor de Textbox directamente:

 private void EnterKey(object o, KeyPressEventArgs e) { if(e.KeyChar == (char)Keys.Enter) { if(!int.TryParse(orderID.Text, out newCurrentID)) MessageBox.Show("Not a number"); e.Handled = true; } } 

Compruebe la cadena en busca de la string.IsNullOrEmpty() y no intente analizar dichas cadenas.

Use TryParse lugar de analizar el valor directamente:

 int intResult = 0; if (Int32.TryParse(yourString, out intResult) == true) { // do whatever you want... } 

Prueba este código

 if (!string.IsNullOrEmpty(currentID)){ newCurrentID = int.Parse(currentID); }