C# 一次又一次地获取格式化异常
我在计算不同物体的面积。所有这些对象都有自己的C# 一次又一次地获取格式化异常,c#,formatexception,C#,Formatexception,我在计算不同物体的面积。所有这些对象都有自己的WinForm。我想在CalculationBase类中进行计算,但当我尝试这样做时,我总是通过FormatException收到一条消息。以下是我的代码: 在myProgram.cs中,我创建了一个对我要计算的表单的引用 static class Program { public static frmRectangle formRect; [STAThread] static void Mai
WinForm。
我想在CalculationBase
类中进行计算,但当我尝试这样做时,我总是通过FormatException收到一条消息。
以下是我的代码:
在myProgram.cs
中,我创建了一个对我要计算的表单的引用
static class Program
{
public static frmRectangle formRect;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
formRect = new frmRectangle();
Application.Run(new frmMain());
}
}
在CalculationBase
class I中,变量声明为double Width,height代码>我输入了以下代码来进行计算:
private void Calculations()
{
FormCheck();
if (rect)
{
Debug.WriteLine("Rectangular is open");
// Area
Program.formRect.txtFormArea.Text = string.Format("A = {0} * {1}", b, h);
if (millimeters)
i = (int)Math.Pow(10, 2);
else if (centimeters)
i = (int)Math.Pow(10, 4);
areaPrimair = Math.Round((b * h), 4);
areaSecundair = Math.Round((areaPrimair / i), 4);
Program.formRect.txtAreaPrimair.Text = areaPrimair.ToString();
Program.formRect.txtAreaSecundair.Text = areaSecundair.ToString();
}
}
在ClickEvent中调用此函数:
private void btnCalculate_Click(object sender, EventArgs e)
{
try
{
breadth = double.Parse(Program.formRect.txtBreadthInput.Text);
height = double.Parse(Program.formRect.txtHeightInput.Text);
Calculations();
}
catch(FormatException)
{
MessageBox.Show("Some values are invalid. Please check your input.", "Invalid value");
}
}
}
如前所述,我的程序一直显示FormatException的消息。当您将空字符串或非数字字符串传递给Double.Parse(“”
)时,您将得到一个FormatException。
在按下按钮进行调试之前,请确保输入的是双字符串。您在哪里发现异常发生?如果将b和h传递给计算,为什么要在那里再次解析它?简而言之:Program.formRect.txtBreadthInput.Text
和/或Program.formRect.txtHeightInput.Text
不以有效格式表示双精度
。也许您的文化背景是en us
,但用户输入了1.000,50
,这在德国是有效的f.e.。在事件中的计算行上放置一个断点,然后读取宽度和高度值。@TimSchmelter对双重解析表示抱歉,我只是按现在的方式更新了代码。@FJPoort:问题肯定出在double.Parse中(Program.formRect.txtBreadthInput.Text);
或下一行。因此,您应该向我们显示您正在使用的区域性以及用户输入的内容(两个字符串值txtBreadthInput.Text
和txtHeightInput.Text
)。您还应该;)输入始终是双精度的,但仍然得到formatexception。如前所述,当我在try块上使用断点并读取文本框的值时,它说这是一个空字符串…检查您的代码中的textfield名称是否与winforms项目匹配您可以将这些行注释掉b=width;h=高度;从ur计算方法