输入字符串的格式不正确

时间:2014-04-02 08:01:31

标签: c#

任何人都请帮忙......

错误 -

  

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

int comboxchoice = Int32.Parse(comboBox1.SelectedValue.ToString());

我正在使用以下代码

private void Form2_Load(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(@"Data Source=MANISH-PC\SQLEXPRESS;Initial Catalog=test2.mdf;Integrated Security=True");
            conn.Open();
            SqlCommand command = new SqlCommand("select * from table1", conn);
            SqlDataAdapter adp = new SqlDataAdapter(command);
            tbl = new DataTable();
            adp.Fill(tbl);
            comboBox1.DataSource = tbl;
            comboBox1.ValueMember = tbl.Columns[0].ColumnName;
            comboBox1.DisplayMember = tbl.Columns[0].ColumnName;
      }
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(@"Data Source=MANISH-PC\SQLEXPRESS;Initial Catalog=test2.mdf;Integrated Security=True");
            conn.Open();
            SqlCommand command = new SqlCommand("select name from table1 where id=@id", conn);
            int comboxchoice = Int32.Parse(comboBox1.SelectedValue.ToString());
           command.Parameters.AddWithValue("@id",comboxchoice);
             SqlDataAdapter adp = new SqlDataAdapter(command);
            DataSet ds = new DataSet();
            adp.Fill(ds, "table1");
            textBox1.Text = ds.Tables["table1"].Rows[0]["name"].ToString();
           }
    }

3 个答案:

答案 0 :(得分:1)

我无法确定您需要哪种方法,但您收到的错误是因为SelectedValue正在返回DataView(根据您的评论)。

根据DataView的{​​{3}},在ToString下,

  

返回包含Component

名称的String

首先,您可以尝试投射

(DataView)comboBox.SelectedValue

但是这应该包括额外的错误处理,以确保SelectedValue是一个有效的DataView。


作为旁注,您还可以通过更好的数字解析来避免这种情况

int comboChoice;
if(int.TryParse((DataView)comboBox.SelectedValue, out comboChoice))
   //Do something
else
    //Number invalid, do something else

答案 1 :(得分:0)

因为comboBox1.SelectedValue没有返回正确的整数值。

您成功将comboBox1.SelectedValue更改为字符串,但字符串无法转换为相应的整数,因为它不是整数

例如,以下语句触发相同的错误

        //non-integer
        string omg = "2313asd";
        int convertedINT = Int32.Parse(omg.ToString());

从@Vignesh Kumar获取想法,空字符串也无法识别为整数格式。

        //empty string
        string omg = "";
        int convertedINT = Int32.Parse(omg.ToString());

如果您确认只有空字符串会触发您的错误,那么只检查string.IsNullOrEmpty()

的空字符串

如果您想消除错误完全,请使用comboBox1.SelectedValue确认您的Int32.TryParse()是正确的整数格式。

        int comboxchoice;
        if (Int32.TryParse(comboBox1.SelectedValue.ToString(), out comboxchoice))
        {
            proceed by using comboxchoice as converted int value
        }
        else
        {
            //not integer value.....
        }

或者也许你可以显示字符串,可以检查它是否是你想象的整数值

        MessageBox.Show(comboBox1.SelectedValue.ToString());

答案 2 :(得分:-1)

你不能摆脱“ToString()”。我相信“SelectedValue”本身就是一个字符串值。