字符串格式错误C#

时间:2018-10-22 19:08:39

标签: c#

我试图弄清楚为什么当我运行程序并按Submit按钮时出现错误,提示我的列表格式错误。程序的一些背景知识:适用于我的视觉编程课程。该程序用于银行帐户。我试图评论每个部分的内容,以使其更容易阅读

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

    //Tab 1 Create and close account
    private void Submitbtn_Click(object sender, EventArgs e)
    {
        double x;

        if (OpenRdo.Checked == true && Nametxtbx.TextLength > 0)
        {
            double.TryParse(Nametxtbx.Text, out x);

            // after clicking the button there is
            // no number; it says system.random
            Random acct = new Random();                
            int AccountNumber = acct.Next(5, 1000);
            outputlbl.Text = acct.ToString();
        }

        // list for accounts 
        // This is where it says I have the error
        // that my list is in the wrong format
        var accounts = new List<Account>
        {
            new  Account(Nametxtbx.Text, double.Parse(outputlbl.Text), 0)
        };

        // Write these records to a file
        WriteFile(accounts);

        // message box when you create account
        if (ValidateChildren(ValidationConstraints.Enabled))
        {
            MessageBox.Show("Account Created", "Message", 
                MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }

    //writing to the file
    static void WriteFile(List<Account> accts)
    {
        StreamWriter outputFile = File.CreateText("accounts.txt");
        string record;

        foreach (var acct in accts)
        {
            record = $"{acct.Name},{acct.Balance}";
            Console.WriteLine($"Writing record: {record}");
            outputFile.WriteLine(record);
        }

        outputFile.Close();
    }
}

2 个答案:

答案 0 :(得分:1)

据我所知(这是很多代码),问题在于这些行:

Random acct = new Random();                
int AccountNumber = acct.Next(5, 1000);
outputlbl.Text = acct.ToString();

您将标签设置为“ System.Random”(因为在错误的地方调用了ToString())。而且以后不能将其合理地转换为整数。

理想情况下,您甚至不应从UI检索数据。如果后面的代码中有整数,则保留该整数。用它。但是由于事件之间的分隔可能并不总是可能的。

答案 1 :(得分:-1)

我建议,如果您不知道文本框中的内容,请不要仅解析文本。 宁可做这样的事情

 list3 = [x for x in list2 if not (x.isdigit() or x[0] == '-' and x[1:].isdigit())]

另外,看看formatprovider