1

所以我有一个项目要做一个具有存款功能的银行账户系统。但是,我无法将输入到文本框中的金额存入,因为列表框中的项目属于“对象”类型。如何将列表框中项目的数据类型从“object”更改为“double”。---------仅供参考:这是家庭作业----------

这就是我声明数组的方式:

    double[] accountbalances = {1348.36, 4456.63,2247.50,8175.86,4721.83,7815.35,3573.02,1603.53,4732.36, 2620.32};

    string[] accountnumbers = {"991364", "103655", "830087", "963216", "216329", "546188", "969200", "211794", "992629", "451876"};

这就是我将数组显示在列表框中的方式:

    foreach (double balance in accountbalances)
        {
            lstAccountBalances.Items.Add(("$") + balance);
        }
        foreach (string account in accountnumbers)
        {
            lstAccountNumbers.Items.Add(account);
        }

我正在尝试将(存款)添加到列表框中的选定帐户,但它返回一个错误,指出转换错误并且列表框中的项目是“对象”类型,而不是我为数组定义的双精度类型.

    private void button2_Click(object sender, EventArgs e)
    {
        double depositamount = double.Parse(textBox1.Text);

        if (depositamount > 0 && lstAccountNumbers.SelectedIndex != -1)
        {
            int account = lstAccountNumbers.SelectedIndex;

            double balance = (double)lstAccountBalances.Items[account];

            lstAccountNumbers.Items[account] = depositamount + balance;
        }
        else
        {
            MessageBox.Show("Enter Value Geater Than 0 and Select An Account Number ", "INVALID", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
4

1 回答 1

1

问题是您没有在列表框中添加一个双精度,而是一个字符串,因为您$在它前面添加了字符。

设置

lstAccountBalances.FormatString = "c"; // c means currency

在开头的某个地方(例如在设计器中),然后添加不带美元符号的数字:

lstAccountBalances.Items.Add(balance);

之后,它们将保留double,您可以将它们从object

于 2013-04-29T02:25:07.323 回答