簡體   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