簡體   English   中英

設置NumericUpDown值時,“輸入字符串的格式不正確”

[英]“Input string was not in a correct format” when setting a NumericUpDown value

我不明白為什么這行不通。

我用一個文件來設置一堆在我的計划。 我用分隔符讀取文件的內容。 我的文本文件如下所示: The Message$1$5001&5002&5003

當我想讀我的文件我得到錯誤的數值的數值: Input string was not in a correct format. 在線: nudInterval.Value = decimal.Parse(setting);

這是我的方法:

if (!lastUsed.EmptyFile())
{
    string[] allSettings = lastUsed.Text.Split('$');
    int settingCount = 0;

    foreach (string setting in allSettings)
    {
        settingCount++;

        if (settingCount == 1)
        {
            txtText.Text = setting;
        }
        else if (settingCount == 2)
        {
            if (setting == "0") tbType.SelectedTab = tbInterval;
            else tbType.SelectedTab = tbRange;
        }
        else if (settingCount == 3)
        {
            nudInterval.Value = decimal.Parse(setting);
        }
        else if (settingCount == 4)
        {
            nudMin.Value = decimal.Parse(setting);
        }
        else if (settingCount == 5)
        {
            nudMax.Value = decimal.Parse(setting);
        }
    }
}

這是因為一半的分隔符是&,而不是$。

這意味着您正在嘗試執行

nudInterval.Value = decimal.Parse("5001&5002&5003");

這將失敗。

如果這些值是有效值,則可以更改split語句:

string[] allSettings = lastUsed.Text.Split(new char[] {'$', '&'});

或在分割前用$替換&:

string[] allSettings = lastUsed.Text.Replace('&', '$').Split('$');

那就是int.Parse拋出的FormatException消息。 什么是setting 您認為這是一個有效數字的字符串,但不是。 它可能會有一個&掛掉它。

如果添加Console.WriteLine(setting)MessageBox.Show(setting)或只是設置一個斷點並查看調試器中的setting ,會發生什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM