Msgstr "Входная строка не в правильном формате".
Я работаю над проектом, в котором у меня есть форма, через которую я могу редактировать вопрос, доступный в виде списка. Всякий раз, когда я выбираю строку из списка и нажимаю кнопку "изменить", текстовые поля над списком загружают вопрос и его параметры.
Это означает, что, когда я выбираю строку в виде списка и нажимаю кнопку "изменить", вопрос загружается в текстовые поля. Я редактирую вопрос там и нажимаю на "сохранить", чтобы сохранить изменения, но я не могу получить доступ к данным в текстовых полях. Он говорит {"Input string was not in a correct format."}
.
Ниже приведен код моей формы frmFormWizard
'edit':
Код 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();
}
}
Всякий раз, когда я пытаюсь скомпилировать код, он говорит "{"Input string was not in a correct format."}"
, и эта ошибка отображается в следующей строке:
QuestionID = Convert.ToInt32(lvTwoOrMoreOptions.SelectedItems[0].Text.ToString());
Пожалуйста, дайте мне знать, что я делаю неправильно.
Ответы
Ответ 1
Похоже, какое-то пространство содержится в тексте.
Используйте
lvTwoOrMoreOptions.SelectedItems [0].Text.ToString(). Обрежьте()
и конвертировать в int32.
надеюсь, что этот код решит вас.
Из комментариев
если ваш ListView находится в режиме отчета (т.е. он выглядит как сетка), тогда вам понадобится свойство SubItems. lvTwoOrMoreOptions.SelectedItems
получает все элементы в представлении списка - SubItems получает столбцы. Итак, lvTwoOrMoreOptions.SelectedItems[0].SubItems[0]
- это первое значение столбца,
Ответ 2
Измените свой код, как показано ниже.
int QuestionID;
bool IsIntValue = Int32.TryParse("YOUR-VARIABLE", out QuestionID);
if (IsIntValue)
{
// YOUR CODE HERE
}
Надеюсь, что я помогу.
Ответ 3
всякий раз, когда я пытаюсь скомпилировать код, который он говорит: "{" Строка ввода не была в правильном формате ".}"
Эта ошибка не возникает при компиляции.
Теперь ошибка comese, потому что вы пытаетесь разобрать недопустимую строку для целого. Чтобы сделать это безопасным образом, вы должны сделать это так:
int questionID;
if(int.TryParse(vTwoOrMoreOptions.SelectedItems[0].Text.ToString(),out questionID))
{
//success code
}
else
{
//failure code
}
Ответ 4
Похоже, что любой текст содержит некоторые символы, которые нельзя преобразовать в целое число, например пробел, буквы, специальные символы и т.д. Проверьте, что происходит при выпадающем меню ниже
lvTwoOrMoreOptions.SelectedItems[0].Text.ToString();
и посмотрим, так ли это.
Ответ 5
Возможно, вы пытаетесь получить доступ к элементу управления внутри элемента управления, возможно, к GridView или DetailsView.
Попробуйте использовать что-то вроде этого:
empsalary = Convert.ToInt32(((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).Text);