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

时间:2013-08-20 09:21:28

标签: c# .net winforms visual-studio-2010

我正在开发一个项目,我在其中有一个表单,通过该表单我可以编辑列表视图中可用的问题。每当我从列表视图中选择一行并单击“修改”按钮时,列表视图上方的文本框会加载问题及其选项。 这意味着当我在列表视图中选择一行并单击“修改”按钮时,问题会将其自身加载到文本框中。我在那里编辑问题并单击“保存”以保存更改,但我无法访问文本框中的数据。它说{"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());

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

5 个答案:

答案 0 :(得分:5)

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

  

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

并转换为int32。

希望此代码能解决您的问题

来自评论

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

答案 1 :(得分:1)

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

  int QuestionID;

  bool IsIntValue = Int32.TryParse("YOUR-VARIABLE", out QuestionID);

  if (IsIntValue)
  {
      // YOUR CODE HERE  
  }

希望我会帮助你。

答案 2 :(得分:1)

  

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

编译时不会出现此错误。

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

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

答案 3 :(得分:0)

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

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

并查看是否是这种情况。

答案 4 :(得分:0)

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

尝试使用以下内容:

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