无法将类型'string'隐式转换为'decimal'

时间:2015-05-13 09:34:08

标签: c# visual-studio

private void button18_Click(object sender, EventArgs e)
    {
        Form1 stForm = new Form1();
        DialogResult result = stForm.ShowDialog(this);

        if (result == DialogResult.Cancel)
            return;
        Inscrierea__pentru_burs_sau_contract media = new Inscrierea__pentru_burs_sau_contract();
        media.Media_MNDP = stForm.MNDP.Text;
        media.Media_MNEA = stForm.MNEA.Text;
        media.Media_Concurs = stForm.MediaConcurs.Text;

        db.Media.Add(media);
        db.SaveChanges();
        MessageBox.Show("Salvarea a avut loc cu succes!!!");
    }

请帮我解决我的错误:

  1. media.Media_MNDP = stForm.MNDP.Text;
  2. media.Media_MNEA = stForm.MNEA.Text;
  3. media.Media_Concurs = stForm.MediaConcurs.Text;
  4. 错误“无法将类型'string'隐式转换为'decimal'”

3 个答案:

答案 0 :(得分:4)

使用Decimal.TryParse(string, out val)

示例:

decimal val;
if(Decimal.TryParse(stForm.MNDP.Text, out val))
    media.Media_MNDP = val;

最好使用tryparse方法,因为它可以避免抛出运行时异常

答案 1 :(得分:2)

试试这个

 media.Media_MNDP = Decimal.Parse(stForm.MNDP.Text);

对于会抛出错误的emtpy文本框。

为了使错误免费试试这个

decimal demo;

if(Decimal.TryParse(stForm.MNDP.Text,out demo)){
  media.Media_MNDP = Decimal.Parse(stForm.MNDP.Text);
}

答案 2 :(得分:1)

使用Parse

时添加try-catch
try{
media.Media_MNDP = Decimal.Parse(stForm.MNDP.Text);
media.Media_MNEA = Decimal.Parse(stForm.MNEA.Text);
media.Media_Concurs = Decimal.Parse(stForm.MediaConcurs.Text);
}
catch(Exception ex){
}