字符串格式错误c#?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (62)

我试图弄清楚为什么当我运行我的程序并按下提交按钮时,我收到一条错误消息,说我的列表格式错误。关于程序的一点背景:这是我的可视化编程课程。该计划适用于银行账户。我试着评论每个部分是什么让它更容易阅读

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();
    }
}
提问于
用户回答回答于

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

if(double.TryParse (outputlbl.Text, out double outputNumber))
{
     new  Account(Nametxtbx.Text, outputNumber, 0);
}

另外,看看formatprovider

用户回答回答于

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

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

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

理想情况下,您甚至不应该从UI中检索数据。如果你的代码后面有一个整数,那就把它保留在那里。用它。但事件之间的分离可能并非总是可能。

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券