【问题标题】:String was not recognized as a valid boolean in C# RadioButton在 C# RadioButton 中,字符串未被识别为有效的布尔值
【发布时间】:2016-10-25 14:17:03
【问题描述】:

我想将值从一个表单发送到另一个表单,这意味着当我单击一个按钮时,我想通过 id 列将学生值发送到另一个表单。但是,当我想发送 RadioButton 值时,我收到一个关于字符串无法识别的错误。

请注意,我不会将 RadioButton 值作为字符串(即男性或女性)保存到数据库中。

这是代码本身。

if (this.isupdate)
{
    DataTable dtStudentInfo =  GetAllStudentInfoById(this.StudentId);
    DataRow row = dtStudentInfo.Rows[0];
    tbID.Text = row["std_id"].ToString();
    tbName.Text = row["std_name"].ToString();
    tbFatherName.Text = row["std_f_name"].ToString();
    tbAddress.Text = row["std_address"].ToString();
    tbBatchNo.Text = row["std_batch"].ToString();
    tbBatchYear.Text = row["std_batch_year"].ToString();
    tbCNIC.Text = row["std_cnic"].ToString();
    tbMobNumber.Text = row["std_mob"].ToString();
    rbMale.Checked = (row["std_gender"] is DBNull) ? false : Convert.ToBoolean(row["std_gender"] = 1) ? true : false);

}

【问题讨论】:

  • std_gender 列的数据类型是什么?
  • Convert.ToBoolean(row["std_gender"] == 1)
  • @rory.ap 数据类型 Varchar(50)

标签: c# winforms


【解决方案1】:

一个小小的错字就大有不同。

Convert.ToBoolean(row["std_gender"] = 1)

本来就是(这里不需要转换):

Convert.ToBoolean(row["std_gender"] == 1)

错误导致row["std_gender"] 被设置为1,导致转换失败。

【讨论】:

  • 不应该是== "1",因为它是一个字符串?
  • 谁说是字符串?
  • 我认为这是与设置值的内部工作有关的问题。
  • 当 == 1 已经返回布尔值时,为什么还需要调用 Convert.ToBoolean
  • 你没有。这就是我说的,对吧? @史蒂夫。该代码只是为了显示编码错误。
【解决方案2】:

试试

Convert.ToBoolean(row["std_gender"].ToString() == "1")

【讨论】:

  • 聚会有点晚了,嗯?
  • ohhh sheet,下次祝我好运;)
  • @rory kh aafi 应该尝试回复:P
  • @AnkitkumarBhatt 已经尝试过...因此错误已删除,但不要将性别加载到单选按钮
  • ` rbMale.Checked = (row["std_gender"] is DBNull) ?假 : (Convert.ToInt32(row["std_gender"]) == 1) ?真假; `
【解决方案3】:

解决了..!!! 代码是正确的......只是返回类型的一个小错误......

private object GetGender()
    {
        if (rbMale.Checked)
        {
            return (int)Gender.Male;
        }
        else if (rbFemale.Checked)
        {
            return (int)Gender.Female;
        }
        else
        {
            return (int)Gender.NoSelection;
        }
    }

只是将返回类型从 object 更改为 int,并将性别的数据类型从 varchar 更改为 int...这里是代码

private int GetGender()
    {
        if (rbMale.Checked)
        {
            return (int)Gender.Male;
        }
        else if (rbFemale.Checked)
        {
            return (int)Gender.Female;
        }
        else
        {
            return (int)Gender.NoSelection;
        }
    }

【讨论】:

  • 这个答案与问题无关。
  • @rory.ap 也许也许不是,但它解决了问题......无论如何,我想我没有向你们解释我的问题......对不起......
猜你喜欢
  • 2017-02-21
  • 1970-01-01
  • 2016-09-13
  • 2022-01-25
  • 1970-01-01
  • 2017-01-03
  • 2017-09-01
  • 2017-03-13
相关资源
最近更新 更多