将String转换为Float / Int时出错。 C#Windows窗体

时间:2017-01-05 16:49:17

标签: c# windows forms textbox

我是C#的新手。我希望有人可以帮助我。

我正在编写一个小型Windows窗体应用程序。 两个textBoxes和一个结果标签。 几个小时我试图从文本框中的字符串中获取浮动值。 稍后,有些人会在TextBox1中编写例如1.25,并将其除以第二个TextBox中的值。

我尝试了很多代码。如果代码工作(不是红色下划线)比我得到的

  

错误消息:“错误类型为mscorlib.dll中的System.Format.Exception”。   “输入的字符串格式错误”。

我该如何解决这个问题?!或者我做错了什么?!请帮忙。我是Noob。

  using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Globalization;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace WindowsFormsApplication1
{


    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            string a = textBox1.Text;
            string b = textBox2.Text;

            float num = float.Parse(textBox1.Text);

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}

`

enter image description here

1 个答案:

答案 0 :(得分:2)

如果您使用Parse功能&输入无效的数字 - 然后您将收到所描述类型的错误消息(以未处理的异常形式)。

您可以实现异常处理:

float num;
try
{
    num = float.Parse(textBox1.Text);
}
catch (FormatException)
{
   // report format error here
}

你也可以赶上超出范围& null参数例外:https://msdn.microsoft.com/en-us/library/2thct5cb(v=vs.110).aspx

或者使用TryParse方法:

float num;
bool NumberOK = float.TryParse(textBox1.Text, out num);
if (!NumberOK)
{
    // report error here
}

https://msdn.microsoft.com/en-us/library/26sxas5t(v=vs.110).aspx