» »

[c#] seštevanje itemov v checkedListBoxu

[c#] seštevanje itemov v checkedListBoxu

bananaman12 ::

Zdravo! rabil bi pomoč pri seštevanju več itemov v checkedListBoxu. Primer:
imam 6 filmov in vsak ima določeno ceno. želim narediti tako da če bo uporabnik obkljukal vse filme se bodo te vse cene skupaj seštele in MessageBox bo izpisal vsoto. Hkrati pa tudi želim narediti da če bo uporabnik obkljukal le 2 ali več filmov da bo tudi ta 2 ali 3 ali 4 cene filmov seštel.

Upam da kdo razume kaj mislim s tem in bi mi res prišla kakšna pomoč.

cekr ::

Najprej naredi en class, v katerega postavi vse propertye, ki se vežejo na posamezen film.
Potem v list(of tvojclass) nafilaj filme z vsemi pripadajočimi podatki.
Ta list pa bindaj oz. popiši na ckeckedListBox. (obstoječi ckeckedListBox je bolj socialen)
----
Potem imaš pa dve variante:
- dogodek po spremembi v ckeckedListBoxu
- dodaš gumb, ki proži seštevanje

---
Po dogodku:
-poglje, kateri filmi so obkljukani
-poberi indexe le teh in iz list poberi izbrane filme.

Ko boš imel list(of tvojClass) z izbranimi filmi pa pride na vrsto LINQ, ki ti reši vse tvoje tegobe v eni vrstici.
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]

mihies ::

Evo, v OnLoad testno naplnim, v button1_Click pa izračunam in prikažem vsoto. Upam, da je dovolj razumljivo.
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        class Item
        {
            public string Text;
            public int Vrednost;

            public override string ToString()
            {
                return Text;
            }
        }

        protected override void OnLoad(EventArgs e)
        {
            if (!DesignMode)
            {
                Random rnd = new Random();
                for (int i = 0; i < 4; i++)
                {
                    int cena = rnd.Next(100);
                    Item item = new Item
                    {
                        Text = string.Format("Film {0} stane {1}EUR", i, cena),
                        Vrednost = cena
                    };
                    checkedListBox1.Items.Add(item);
                }
            }
            base.OnLoad(e);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var izbirniki = checkedListBox1.CheckedItems.OfType<Item>();
            MessageBox.Show(this, "Cena vseh izbranih filmov je " + izbirniki.Sum(i => i.Vrednost));
        }
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

Zgodovina sprememb…

  • spremenil: mihies ()

cekr ::

To je čisto tako.
Enostavno.
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]

vorantz ::

če malo pomisliš dela tip za šolo
tko, da je bla tvoja rešitev preveč advanced :P

mihies ::

vorantz je izjavil:

če malo pomisliš dela tip za šolo
tko, da je bla tvoja rešitev preveč advanced :P


Seveda, naj dobi dobro oceno 8-)

Drugače je pa to malo enostavneje za šolo, če so lamde prehude:
int suma = 0;
foreach (Item album in checkedListBox1.CheckedItems)
{
  suma += album.Vrednost;
}
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c#] ukaz radirka

Oddelek: Programiranje
91120 (913) japol
»

[c#] picturebox, slika na sliko

Oddelek: Programiranje
151089 (899) japol
»

[C#] Delo z okni - urejanje osebe

Oddelek: Programiranje
8990 (862) darkolord
»

[C#] Spreminjanje fahrenheitov v celzije

Oddelek: Programiranje
51373 (1228) blackwing
»

C# Program

Oddelek: Programiranje
393104 (2027) Spura

Več podobnih tem