c# - stringtonumber - "Cadena de entrada no tiene el formato correcto."
system formatexception la cadena de entrada no tiene el formato correcto en c# (5)
cada vez que intento compilar el código, dice "{" La cadena de entrada no estaba en el formato correcto. "}"
Este error no comenzará a compilarse.
Ahora el error viene porque estás tratando de analizar una cadena inválida a un entero. Para hacerlo de manera segura, deberías hacerlo así
int questionID;
if(int.TryParse(vTwoOrMoreOptions.SelectedItems[0].Text.ToString(),out questionID))
{
//success code
}
else
{
//failure code
}
Estoy trabajando en un proyecto en el que tengo un formulario a través del cual puedo editar una pregunta disponible en una vista de lista. Cada vez que selecciono una fila de la vista de lista y hago clic en el botón ''modificar'', los cuadros de texto sobre la vista de lista cargan la pregunta y sus opciones. Esto significa que cuando selecciono una fila en la vista de lista y hago clic en el botón ''modificar'', la pregunta se carga en los cuadros de texto. Edito la pregunta allí y hago clic en ''guardar'' para guardar los cambios, pero no puedo acceder a los datos en los cuadros de texto. Dice {"Input string was not in a correct format."}
. {"Input string was not in a correct format."}
.
Mi código del formulario frmFormWizard
''s botón'' editar ''se da a continuación:
Código frmFormWizard.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
namespace SurveyBuilder
{
public partial class frmFormWizard : Form
{
int intPanelNumber = 1;
Boolean blnCancel = false;
//int intFlag = 1;
public frmFormWizard()
{
InitializeComponent();
}
.......................
.......................
.......................
.......................
private void btnEditTwoOrMoreOptions_Click(object sender, EventArgs e)
{
int QuestionID;
string sql;
QuestionID = Convert.ToInt32(lvTwoOrMoreOptions.SelectedItems[0].Text.ToString());
{
SqlConnection cn = new SqlConnection();
SqlCommand rs = new SqlCommand();
SqlDataReader sdr = null;
clsConnection clsCon = new clsConnection();
clsCon.fnc_ConnectToDB(ref cn);
sql = "";
sql += "SELECT * FROM SurveyQuestionLog WHERE SurveyQuestionLog.QuestionLogID = "+ QuestionID +"";
//sql += "SELECT * FROM SurveyQuestionLog";
rs.Connection = cn;
rs.CommandText = sql;
sdr = rs.ExecuteReader();
while (sdr.Read())
{
txtTwoOrMoreQuestions.Text = (string)sdr["Question"];
txtOption1.Text = (string)sdr["Choice1"];
......................................
......................................
......................................
}
sdr.Close();
rs = null;
cn.Close();
}
}
Cada vez que intento compilar el código, dice "{"Input string was not in a correct format."}"
Y este error se muestra en la siguiente línea:
QuestionID = Convert.ToInt32(lvTwoOrMoreOptions.SelectedItems[0].Text.ToString());
Por favor, hágame saber lo que estoy haciendo mal.
Por favor, cambie su código como a continuación.
int QuestionID;
bool IsIntValue = Int32.TryParse("YOUR-VARIABLE", out QuestionID);
if (IsIntValue)
{
// YOUR CODE HERE
}
Espero seré de ayuda.
Parece que algunos espacios incluyen en el texto. Utilizar
lvTwoOrMoreOptions.SelectedItems [0] .Text.ToString (). Trim ()
y convierte a int32.
Espero que este código te solucione
De los comentarios
si su ListView está en modo de informe (es decir, parece una cuadrícula), necesitará la propiedad SubItems. lvTwoOrMoreOptions.SelectedItems
obtiene cada elemento en la vista de lista - SubItems le proporciona las columnas. Entonces lvTwoOrMoreOptions.SelectedItems[0].SubItems[0]
es el primer valor de columna,
Es posible que esté tratando de acceder a un control dentro de un control, tal vez un GridView o DetailsView.
Intenta usar algo como esto:
empsalary = Convert.ToInt32(((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).Text);
Parece que cualquiera que sea el texto que contenga algunos caracteres que no se pueden convertir a enteros como espacio, letras, caracteres especiales, etc. Compruebe lo que viene a través del menú desplegable, como se muestra a continuación.
lvTwoOrMoreOptions.SelectedItems[0].Text.ToString();
y ver si ese es el caso.