using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static System.Windows.Forms.VisualStyles.VisualStyleElement; namespace ПРСТ { public partial class Form1 : Form { double marketplacePercent = 0; public Form1() { InitializeComponent(); } // Обработчик для формы загрузки private void Form1_Load(object sender, EventArgs e) { // Проверяем состояние чекбоксов при запуске программы if (checkBox1.Checked) { textBox4.Text = "100"; textBox4.ReadOnly = true; } else { textBox4.ReadOnly = false; } if (checkBox2.Checked) { textBox6.Text = "23.05"; textBox6.ReadOnly = true; } else { textBox6.ReadOnly = false; } if (checkBox3.Checked) { textBox7.Text = "30"; textBox7.ReadOnly = true; } else { textBox7.ReadOnly = false; } } // Обработчик изменений состояния чекбоксов private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked) { textBox4.Text = "100"; textBox4.ReadOnly = true; } else { textBox4.ReadOnly = false; } } private void checkBox2_CheckedChanged(object sender, EventArgs e) { if (checkBox2.Checked) { textBox6.Text = "23.05"; textBox6.ReadOnly = true; } else { textBox6.ReadOnly = false; } } private void checkBox3_CheckedChanged(object sender, EventArgs e) { if (checkBox3.Checked) { textBox7.Text = "30"; textBox7.ReadOnly = true; } else { textBox7.ReadOnly = false; } } private void button1_Click(object sender, EventArgs e) { double pricePerSpool, weightPerSpool, modelWeight, printTime, printCostPerHour, boxCost, pickupCost, tissueCost; // Преобразуем запятую в точку, если это необходимо, и затем пытаемся преобразовать строку в число pricePerSpool = TryParseWithComma(textBox1.Text); weightPerSpool = TryParseWithComma(textBox2.Text); modelWeight = TryParseWithComma(textBox3.Text); printTime = TryParseWithComma(textBox5.Text); printCostPerHour = TryParseWithComma(textBox4.Text); boxCost = TryParseWithComma(textBox6.Text); pickupCost = TryParseWithComma(textBox7.Text); tissueCost = TryParseWithComma(textBox8.Text); // Добавляем обработку для бумаги тишью // Проверяем, удалось ли успешно преобразовать все значения if (pricePerSpool == -1 || weightPerSpool == -1 || modelWeight == -1 || printTime == -1 || printCostPerHour == -1 || boxCost == -1 || pickupCost == -1 || tissueCost == -1) { MessageBox.Show("Введите корректные числовые значения в поля."); return; } // Чекбоксы: если они активированы, устанавливаем значения по умолчанию if (checkBox1.Checked) printCostPerHour = 100; // Значение по умолчанию для стоимости работы принтера if (checkBox2.Checked) boxCost = 23.05; // Значение по умолчанию для коробки if (checkBox3.Checked) pickupCost = 30; // Значение по умолчанию для приемки // Расчет стоимости пластика для модели double plasticCost = (pricePerSpool / weightPerSpool) * modelWeight; // Расчет стоимости работы принтера double printCost = printCostPerHour * printTime; // Расчет общей стоимости (пластик + принтер + коробка + приемка + бумага тишью) double totalCost = plasticCost + printCost + boxCost + pickupCost + tissueCost; // Расчет процента маркетплейса marketplacePercent = (plasticCost + printCost) * 0.5; // Расчет финальной стоимости с учетом процента маркетплейса double finalCost = totalCost + plasticCost + marketplacePercent; // добавляем стоимость пластика еще раз // Отображаем финальную стоимость в textBox9 textBox9.Text = finalCost.ToString("F2", CultureInfo.InvariantCulture); // Сбрасываем переменную marketplacePercent marketplacePercent = 0; } // Метод для преобразования текста в число, учитывая возможную запятую private double TryParseWithComma(string input) { input = input.Replace(',', '.'); // Заменяем запятую на точку, если она есть double result; if (Double.TryParse(input, NumberStyles.Any, CultureInfo.InvariantCulture, out result)) { return result; } return -1; // Если не удалось преобразовать, возвращаем -1 } private void buttonClear_Click(object sender, EventArgs e) { ClearFields(); // Очистить поля для нового расчета } private void ClearFields() { // Сбрасываем переменную marketplacePercent marketplacePercent = 0; // Проверяем каждый чекбокс и очищаем соответствующие текстовые поля if (!checkBox1.Checked) { textBox4.Clear(); // Очистить поле для стоимости работы принтера } if (!checkBox2.Checked) { textBox6.Clear(); // Очистить поле для стоимости коробки } if (!checkBox3.Checked) { textBox7.Clear(); // Очистить поле для приемки } // Очистка остальных полей textBox1.Clear(); // Очистить поле для цены катушки textBox2.Clear(); // Очистить поле для граммов в катушке textBox3.Clear(); // Очистить поле для веса модели textBox5.Clear(); // Очистить поле для времени работы принтера textBox8.Clear(); // Очистить поле для бумаги тишью // Очистить поле для финальной стоимости textBox9.Clear(); } } }