";输入字符串的格式不正确&”;

本文关键字:不正确 格式 字符串 quot 输入 | 更新日期: 2023-09-27 18:28:22

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

并转换为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  
  }

希望我能帮忙。

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

编译时不会出现此错误。

现在出现错误是因为您试图将一个无效字符串解析为integer。为了以安全的方式进行,你应该像这个一样进行

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

看看是不是这样。