Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2017, 17:48   #1
qpyqpeji
Новичок
Джуниор
 
Регистрация: 12.04.2017
Сообщений: 5
По умолчанию Калькулятор Счета C#

Выручайте Люди добрые !!!
qpyqpeji вне форума Ответить с цитированием
Старый 12.04.2017, 17:49   #2
qpyqpeji
Новичок
Джуниор
 
Регистрация: 12.04.2017
Сообщений: 5
По умолчанию

Доброго времени суток. У меня возникла проблема с кодом, не могу понять в чем дело! когда выбираю одно из блюд, программа фризится и выдает ошибку.Подскажите пожалуйста что делать !)
Изображения
Тип файла: jpg Photo 2.jpg (62.8 Кб, 144 просмотров)
Тип файла: jpg Photo 1.jpg (53.5 Кб, 139 просмотров)
qpyqpeji вне форума Ответить с цитированием
Старый 12.04.2017, 17:50   #3
qpyqpeji
Новичок
Джуниор
 
Регистрация: 12.04.2017
Сообщений: 5
По умолчанию

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public struct Orders
{
public string item;
public double price;
}
const double TAX = 0.06;
Orders order = new Orders();
static double subtotal = 0;
static double totalTaxes = 0;
static double total = 0;
string finalBill = "Final Bill: \n";

public Form1()
{
InitializeComponent();
}
private void getValues(string custOrder)
{
order.item = custOrder.Split('£')[0];
order.price = Convert.ToDouble(custOrder.Split('£ ')[1]);
lstOutput.Items.Add("price: " + order.price);
finalBill += "Ordered Item: " + order.item + "\nPrice: " + order.price.ToString("C2") + "\n";
updateBill();
}
private void updateBill()
{
subtotal += order.price;
total += order.price + (order.price * TAX);
totalTaxes += order.price * TAX;

lstOutput.Items.Clear();
lstOutput.Items.Add(finalBill);
lstOutput.Items.Add("Subtotal: " + subtotal.ToString("C2"));
lstOutput.Items.Add("Tax: " + totalTaxes.ToString("C2"));
lstOutput.Items.Add("Total: " + total.ToString("C"));
}

private void DropDownSelection(object sender, EventArgs e)
{
if (sender == cmbStart)
getValues(cmbStart.SelectedItem.ToS tring());
else if (sender == cmbTop)
getValues(cmbTop.SelectedItem.ToStr ing());
else if (sender == cmbBas)
getValues(cmbBas.SelectedItem.ToStr ing());
else
getValues(cmbDes.SelectedItem.ToStr ing());

}
}
}
qpyqpeji вне форума Ответить с цитированием
Старый 12.04.2017, 17:59   #4
hoolygan
Пользователь
 
Регистрация: 11.04.2017
Сообщений: 64
По умолчанию

С какого перепугу должно сработать условие
if (sender == cmbStart)
Это с каких пор мы забыли о приведении типов, и почему object должен равняться контролу ?
Вот эту процедуру срочно переписывать, перед этим гуглить по словам UpCast и DownCast
hoolygan вне форума Ответить с цитированием
Старый 12.04.2017, 18:18   #5
qpyqpeji
Новичок
Джуниор
 
Регистрация: 12.04.2017
Сообщений: 5
По умолчанию

Цитата:
Сообщение от hoolygan Посмотреть сообщение
С какого перепугу должно сработать условие
if (sender == cmbStart)
Это с каких пор мы забыли о приведении типов, и почему object должен равняться контролу ?
Вот эту процедуру срочно переписывать, перед этим гуглить по словам UpCast и DownCast
Идея была позаимствована у одного товарища с ютуба. у него это все работает.. а вот у меня нет(( https://www.youtube.com/watch?v=EbrGoUqbb-A
qpyqpeji вне форума Ответить с цитированием
Старый 12.04.2017, 22:20   #6
hoolygan
Пользователь
 
Регистрация: 11.04.2017
Сообщений: 64
По умолчанию

У парня с ютуба могут хоть шарики прыгать )
А Вам настоятельно рекомендую сначала понять, что происходит при нажатии на клавишу, и что передается в метод-обработчик. Начать с азов, с понятий наследования, потом делегатов, потом событий, и потом поймете, что в переменной sender передается ссылка на контролл, но до нее добраться можно через даункаст, а потом уже обработать. Как-то так.
hoolygan вне форума Ответить с цитированием
Старый 13.04.2017, 02:22   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от qpyqpeji Посмотреть сообщение
Это с каких пор мы забыли о приведении типов, и почему object должен равняться контролу ?
очень спокойно.
первое что происходит при сравнении это сравнение ссылок.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.04.2017, 09:33   #8
hoolygan
Пользователь
 
Регистрация: 11.04.2017
Сообщений: 64
По умолчанию

Хорошо, признаю, сравняются..
Тогда поехали в другую сторону. Вопрос к ТС
как отличаются эти 2 кода

Код:
string str = "1; 26.02";
var spl = str.Split(';');
double rez = Convert.ToDouble(spl[1]);
и

Код:
string str = "1; 26,02";
var spl = str.Split(';');
double rez = Convert.ToDouble(spl[1]);
И почему 1 сработает а другой нет?
hoolygan вне форума Ответить с цитированием
Старый 13.04.2017, 10:46   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

зависит от локали по умолчанию.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.04.2017, 11:08   #10
hoolygan
Пользователь
 
Регистрация: 11.04.2017
Сообщений: 64
По умолчанию

Правильно, но я хотел, чтобы ТС подумал немного - ошибка, на сколько я могу судить по картике (качество не очень, саму ошибку не вижу) - кроется именно в преобразовании в дабл значение. Я поэтому и не написал, какая часть сработала у меня, так как действительно, не указав локаль - понять где ошибка невозможно.
А теперь самый главный вопрос - что будет в этом случае
Код:
string str = "1; 26.02";
var spl = str.Split(';');
double rez = Convert.ToDouble(spl[1], CultureInfo.GetCultureInfo("en-us"));

string str1 = "1; 26,02";
var spl1 = str1.Split(';');
double rez1 = Convert.ToDouble(spl1[1], CultureInfo.GetCultureInfo("ru-ru"));

Последний раз редактировалось hoolygan; 13.04.2017 в 11:12.
hoolygan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка счета komra2 C# (си шарп) 14 02.11.2016 18:34
Автоматизирование счета Deathcube Microsoft Office Excel 3 01.10.2013 10:02
цикл для счета сергей4 Фриланс 3 21.10.2009 09:57
Открытие счета PayPal Slavik Свободное общение 4 26.09.2009 21:15
проверяем наличие счета Romuald Microsoft Office Excel 2 14.01.2009 12:44