繁体   English   中英

我如何修复这个简单的Windows窗体应用程序

[英]how do i fix this simple windows forms application

我在C#中还很陌生,我正在尝试制作Windows Forms应用程序,但遇到了问题。 因此,基本上我的程序会执行此操作,它将从.txt文件中读取一个数字,并将其与用户在textBox中提供的数字相乘。 然后,当用户按下按钮时,它将在另一个文本框中告诉答案。 所以我的问题是,当它尝试读取.txt文件并将其传输为双精度并乘以倍数时,出现了问题,程序崩溃了。 我已在下面添加了按钮的代码”

private void button1_Click(object sender, EventArgs e)
{
    double answer;
    double num;
    double Filename = double.Parse(File.ReadAllText(@"C:/temp/hinnat.txt"));
    num = double.Parse(textBox1.Text);
    answer = Filename * num;
    textBox2.Text = answer.ToString();
}

如果文本无效,请使用TryParse代替

private void button1_Click(object sender, EventArgs e)
{
    double answer;
    double num;
    double Filename 
    if (double.TryParse(File.ReadAllText(@"C:/temp/hinnat.txt"), out Filename)
       && double.TryParse(textBox1.Text, out num))
    {
        answer = Filename * num;
        textBox2.Text = answer.ToString();
    }
}

Double.ParseDouble.TryParse方法取决于区域性,即在某些区域性中,小数点分隔符是点('。'),如10.5所示 ,而在其他区域性中,十进制分隔符是逗号(','),例如10,5 这就是为什么如果不确定文本文件中可能有什么输入或者应用程序的当前区域性是什么,那么最好有一个定制的TryParse方法,该方法用点替换任何逗号并使用不变区域性将字符串解析为两倍:

private static bool TryParse(string str, out double result)
{
    // Invariant culture uses dot ('.') as decimal separator, so replace any comma with dot
    if (str.IndexOf(',') != -1)
    {
        str = str.Replace(',', '.');
    }

    // Try parsing with the Invariant culture
    return Double.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out result);
}

然后您可以这样称呼它:

string fileContent = File.ReadAllText(@"C:/temp/hinnat.txt");
double fileDouble;
if (TryParse(fileContent, out fileDouble))
{
    // Parsing was successfull
    // Your code here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM