Значение элемента Combobox в валюте

#c# #winforms #combobox

#c# #winforms #выпадающий список

Вопрос:

У меня есть поле со списком, в котором указаны типы продуктов и связанные с ними цены. Мне нужно взять значение элемента поля со списком, которое является ценой, и преобразовать его, чтобы умножить на другое значение и иметь возможность поместить его в счет-фактуру в качестве валюты. В настоящее время я могу преобразовать его в строку, но, похоже, я не могу просто использовать a .Перегрузка toString(«C») для изменения его на currency. Любая помощь была бы отличной:

     private void btnAddProduct_Click(object sender, EventArgs e)
    {
        double invoiceTotal;
        double productTotal;
        double currentTotal;
        string multiplier;
        string price;

        //invoiceTotal = 0;
        price = Convert.ToString(comboBox1.SelectedValue);

        multiplier = comboBox2.Text;
        productTotal = Convert.ToDouble(txtProductTotal.Text);

        if (txtInvoiceTotal.Text != "")
        {
            invoiceTotal = Convert.ToDouble(txtInvoiceTotal.Text);
        }
        else
        {
            invoiceTotal = 0;
        }            
        currentTotal = productTotal   invoiceTotal;
        txtInvoiceTotal.Text = Convert.ToString(currentTotal);
        string prod = comboBox1.Text;

        if (txtExplanation.Text == "") 
        {
            txtExplanation.Text = prod   " X "   multiplier   " @ "   price;
        }
        else
            txtExplanation.Text = txtExplanation.Text   "rn"   prod   " X "   multiplier   " @ "   price;           

    }
  

Ответ №1:

ComboBox1.SelectedValue уже должно быть строкой. Таким образом, вы можете захотеть затем использовать String .Отформатируйте, чтобы отформатировать его так, как вы этого хотите. В противном случае вы могли бы преобразовать его в double с помощью Double .Выполните синтаксический анализ(ComboBox1.SelectedValue), а затем вызовите toString(«C») для двойного значения.

Комментарии:

1. Это сработало, спасибо! Используется: строка currencyText = String. Формат («{0:C}», цена);

Ответ №2:

То, что вы, вероятно, ищете, — это строковый формат:

 var price = comboBox1.SelectedValue;
var currencyText = price.ToString("$#,##0.00");
  

Комментарии:

1. По-прежнему безуспешно. Он продолжает выдавать мне ту же ошибку: перегрузка для метода ‘toString’ не принимает один аргумент. То же самое, когда я пытался использовать toString («C»);

2. Какой тип данных вы сохраняете в поле со списком? Это данные о валюте?

3. Да, это данные о валюте. Это «цены» на продукты, которые мы продаем.

4. Если данные были сохранены в поле со списком как необработанный тип валюты, .toString() должен был сработать. Если бы, с другой стороны, оно было сохранено в виде строк, это объяснило бы сбой.