Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

C# forms

C# forms

Мнениеот Гост » 25 Окт 2022, 22:22

C# windows forms
Здравейте. Искам да направя следното:
Когато от падащият списък избера въпросната пица да излиза нейната стойност в текстовата кутия и когато маркирам някой от радио бутоните или чек боксовете също да се добавя тяхната стойност. Може ли да кажете как да го напиша с код?
312811730_645039510403201_613864215978753800_n.jpg
312811730_645039510403201_613864215978753800_n.jpg (475.13 KiB) Прегледано 701 пъти

312889485_1086285705408141_2298511990593376751_n.jpg
312889485_1086285705408141_2298511990593376751_n.jpg (623.02 KiB) Прегледано 701 пъти
Гост
 

Re: C# forms

Мнениеот ammornil » 27 Окт 2022, 02:00

Използвайте EVENT management. Всеки път, когато се ъпдейтва някой контрол, променяйте стойността на общата сума. Прилагам кратък, набързо спретнап пример като прикачен файл.

Би следвало да има процедура, която изчиства всички избрани екстри, всеки път когато се промени избора на основния продукт, нямам време да го покажа тук.

Успех!

Забележка: Обикновено листата с продуктите и техните цени не се вкарват фиксирано в кода, а се извличат от ценова листа посредством отделен метод в класа, който управлява продуктите, но това е част от по-широко решение на проблема. За нуждите на демонстрацията тук са кодирани директно в основния код на формата, което не е добра практика, защото усложнява поддръжката и актуализациите.

Скрит текст: покажи
Код: Избери целия код
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 FormsEventsExample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            DataTable dt1 = new DataTable();

            dt1.Columns.Add("Description", typeof(String));
            dt1.Columns.Add("Price", typeof(Decimal));
            dt1.Rows.Add("Margaritta pizza Small - 4.49", 4.49);
            dt1.Rows.Add("Margaritta pizza Medium - 6.49", 6.49);
            dt1.Rows.Add("Margaritta pizza Large - 8.99", 8.99);
            dt1.Rows.Add("Pepperoni pizza Small - 5.99", 5.99);
            dt1.Rows.Add("Pepperoni pizza Meduim - 7.99", 7.99);
            dt1.Rows.Add("Pepperoni pizza Large - 9.99", 9.99);
            dt1.Rows.Add("Quatro stagionni pizza Large - 14.50", 14.50);
            dt1.Rows.Add("Capriciosa pizza Large - 18.50", 18.50);

            cboProductMain.Items.Clear();
            cboProductMain.DataSource = dt1;
            cboProductMain.DisplayMember = "Description";
            cboProductMain.ValueMember = "Price";
            cboProductMain.SelectedIndex = 0;

            txtPrice.Text = "0.00";

            chkKetchup.Checked = false;
            chkMayo.Checked = false;
            chkSoySouce.Checked = false;
            chkGarlicSauce.Checked = false;

        }


        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtPrice.Text = cboProductMain.SelectedValue.ToString();
        }

        private void chkKetchup_CheckedChanged(object sender, EventArgs e)
        {
            if (chkKetchup.Checked)
            {
                double cPrice = double.Parse(txtPrice.Text) + 0.49;
                txtPrice.Text = cPrice.ToString();
            }
            else
            {
                double cPrice = double.Parse(txtPrice.Text) - 0.49;
                txtPrice.Text = cPrice.ToString();
            }
        }

        private void chkMayo_CheckedChanged(object sender, EventArgs e)
        {
            if (chkMayo.Checked)
            {
                double cPrice = double.Parse(txtPrice.Text) + 0.49;
                txtPrice.Text = cPrice.ToString();
            }
            else
            {
                double cPrice = double.Parse(txtPrice.Text) - 0.49;
                txtPrice.Text = cPrice.ToString();
            }
        }

        private void chkSoySouce_CheckedChanged(object sender, EventArgs e)
        {
            if (chkSoySouce.Checked)
            {
                double cPrice = double.Parse(txtPrice.Text) + 0.99;
                txtPrice.Text = cPrice.ToString();
            }
            else
            {
                double cPrice = double.Parse(txtPrice.Text) - 0.99;
                txtPrice.Text = cPrice.ToString();
            }
        }

        private void chkGarlicSauce_CheckedChanged(object sender, EventArgs e)
        {
            if (chkGarlicSauce.Checked)
            {
                double cPrice = double.Parse(txtPrice.Text) + 0.99;
                txtPrice.Text = cPrice.ToString();
            }
            else
            {
                double cPrice = double.Parse(txtPrice.Text) - 0.99;
                txtPrice.Text = cPrice.ToString();
            }
        }
    }
}

Прикачени файлове
FormsEvents.zip
(44.06 KiB) 103 пъти
Screenshot 2022-10-27 005028.png
Screenshot 2022-10-27 005028.png (10.13 KiB) Прегледано 682 пъти
Screenshot 2022-10-27 004958.png
Screenshot 2022-10-27 004958.png (12.07 KiB) Прегледано 682 пъти
[tex]\color{lightseagreen}\text{''Който никога не е правил грешка, никога не е опитвал нещо ново.''} \\
\hspace{21em}\text{(Алберт Айнщайн)}[/tex]
Аватар
ammornil
Математик
 
Мнения: 3767
Регистриран на: 25 Май 2010, 19:28
Местоположение: Великобритания
Рейтинг: 1779

Re: C# forms

Мнениеот Гост » 28 Окт 2022, 09:10

БЛАГОДАРЯ ВИ!
Гост
 


Назад към C#, Java



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)