“输入字符串的格式不正确。”

我正在开发一个项目,我在其中有一个表单,通过该表单我可以在列表视图中编辑可用的问题。 每当我从列表视图中选择一行并单击“修改”按钮时,列表视图上方的文本框将加载问题及其选项。 这意味着当我在列表视图中选择一行并单击“修改”按钮时,问题会将其自身加载到文本框中。 我在那里编辑问题并单击“保存”以保存更改,但我无法访问文本框中的数据。 它说{"Input string was not in a correct format."}

我的表格frmFormWizard的’编辑’按钮的代码如下:

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()); 

请让我知道我做错了什么。

看起来文本中包含一些空格。 使用

lvTwoOrMoreOptions.SelectedItems [0] .Text.ToString()。修剪()

并转换为int32。

希望这段代码能解决你

来自评论

如果您的ListView处于报告模式(即它看起来像一个网格),那么您将需要SubItems属性。 lvTwoOrMoreOptions.SelectedItems可以获取列表视图中的每个项目 – SubItems可以获取列。 所以lvTwoOrMoreOptions.SelectedItems[0].SubItems[0]是第一个列值,

请更改您的代码,如下所示。

  int QuestionID; bool IsIntValue = Int32.TryParse("YOUR-VARIABLE", out QuestionID); if (IsIntValue) { // YOUR CODE HERE } 

希望我会帮助你。

每当我尝试编译代码时,它会说“{”输入字符串的格式不正确。“}”

编译时不会出现此错误。

现在错误来了,因为您正在尝试将无效字符串解析为整数。 要以安全的方式做到这一点,你应该这样做

 int questionID; if(int.TryParse(vTwoOrMoreOptions.SelectedItems[0].Text.ToString(),out questionID)) { //success code } else { //failure code } 

您可能正在尝试访问控件内的控件,可能是GridView或DetailsView。

尝试使用这样的东西:

 empsalary = Convert.ToInt32(((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).Text); 

它看起来无论该文本是否包含一些不能转换为整数的字符,如空格,字母,特殊字符等。检查下拉列表中的内容如下所示

lvTwoOrMoreOptions.SelectedItems[0].Text.ToString();

看看是否是这种情况。