Простая кассирская программа - PullRequest
0 голосов
/ 22 октября 2011

private void XButtonExit_Click (отправитель объекта, EventArgs e) { // Это закроет программу Близко(); }

    private void xButtonClear_Click(object sender, EventArgs e)
    {
        //This will clear all the Text Boxes
        xTextBoxQuantity.Clear();
        xTextBoxPrice.Clear();
        xTextBoxRecieved.Clear();
        xTextBoxSubtotal.Clear();
        xTextBoxTotal.Clear();
        xTextBoxReturn.Clear();

        //This will turn the Return box and Lable back to hidden
        xTextBoxReturn.Visible = false;
        xLableReturn.Visible = false;

    }

    private void XButtonBalance_Click(object sender, EventArgs e)
    {
        //This will make the Return box and Lable visable
        xLableReturn.Visible = true;
        xTextBoxReturn.Visible = true;

        //Take value from xTextBoxTotal and store it
        Double Total = Convert.ToDouble(xTextBoxTotal.Text);

       //Take value from xTextBoxRecieved and store it
        double Recieved = Convert.ToDouble(xTextBoxRecieved.Text);

       //Take value from xTextBoxTotal and subtract from amout recieved
        double Amount = Total - Recieved;

        //Take the Amount and store it in xTextBoxReturn
        xTextBoxReturn.Text = Convert.ToString(Amount);

        //Change color, Red for amount owed and green for amout to give back
        if (Amount < .01) xTextBoxReturn.BackColor = Color.Green;
        else xTextBoxReturn.BackColor = Color.Red;


    }

    private void XButtonTotal_Click(object sender, EventArgs e)
    {

        //Take value from xTextBoxQuantity and store it
        Double num1 = Convert.ToDouble(xTextBoxQuantity.Text);

        //Take value from xTextBoxPrice and store it
        Double num2 = Convert.ToDouble(xTextBoxPrice.Text);

        //Peform Muptlication and store it in xTextBoxSubtotal

        Double Subtotal = num1 * num2;
        xTextBoxSubtotal.Text = Convert.ToString(Subtotal);

        //Take the Subtotal and add a 6% sales tax and store it in xTextBoxTotal
        Double SalesTax = Subtotal * 1.06;
        xTextBoxTotal.Text = Convert.ToString(SalesTax); 

Это мой текущий код, и он отлично работает. Вопрос в том, что мне нужно сделать все текстовые поля в формате валюты. Когда я пытаюсь математика больше не работает. Любые идеи помогут. Самая большая проблема, с которой я столкнулся, связана с налогом с продаж при конвертации в валюту. Я не могу заставить работать математику, если промежуточный итог представлен в формате валюты. Я пытался преобразовать его обратно в десятичную, но когда я не могу выполнить команду Подытог * 1.0

Это то, что я изменил:

// Взять значение из xTextBoxTotal и сохранить его

        Convert.ToInt16(xTextBoxTotal.Text);
        Double Total = Convert.ToDouble(xTextBoxTotal.Text); 

       //Take value from xTextBoxRecieved and store it
        double Recieved = Convert.ToDouble(xTextBoxRecieved.Text);

       //Take value from xTextBoxTotal and subtract from amout recieved
        double Amount = Total - Recieved;

        //Take the Amount and store it in xTextBoxReturn
        xTextBoxReturn.Text = Amount.ToString("C");

        //Change color, Red for amount owed and green for amout to give back
        if (Amount < .01) xTextBoxReturn.BackColor = Color.Green;
        else xTextBoxReturn.BackColor = Color.Red;


    }

    private void XButtonTotal_Click(object sender, EventArgs e)
    {

        //Take value from xTextBoxQuantity and store it
        Double num1 = Convert.ToDouble(xTextBoxQuantity.Text);

        //Take value from xTextBoxPrice and store it
        Double num2 = Convert.ToDouble(xTextBoxPrice.Text);

        //Peform Muptlication and store it in xTextBoxSubtotal

        Double Subtotal = num1 * num2;
        xTextBoxSubtotal.Text = Subtotal.ToString("C");

        //Take the Subtotal and add a 6% sales tax and store it in xTextBoxTotal
        Double SalesTax = Subtotal * 1.06;
        xTextBoxTotal.Text = SalesTax.ToString("C"); 

Моя ошибка: исключение FormatException не было обработано в Convert.toInt16 (xtextboxTotal.text)

1 Ответ

0 голосов
/ 22 октября 2011

При форматировании числовой строки в качестве валюты ее необходимо проанализировать, прежде чем можно будет повторно преобразовать ее обратно в числовую форму, это зависит от правил форматирования валют, которые вы использовали для создания числа.

См .: http://msdn.microsoft.com/en-us/library/3s27fasw.aspx

string value;
NumberStyles style;
CultureInfo culture;
double number;

// Parse currency value using en-GB culture.
value = "£1,097.63";
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
culture = CultureInfo.CreateSpecificCulture("en-GB");
if (Double.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays: 
//       Converted '£1,097.63' to 1097.63.
...