NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Diskuze: Přenos Listu z jednoho Formu do druhého

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
GangstaFish
Člen
Avatar
GangstaFish:5.6.2015 23:04

Dobrý den,
píše mi to, že index je mimo dosah.. netuším, jak to opravit..

Tohle je část jednoho formu (Vyber), z kterého přenáším data:

List<Ryba> seznam = new List<Ryba>();
public List<Ryba> ryby = new List<Ryba>();
public List<int> pozice = new List<int>();
int check = 0;

public void Vybrat_ryby()
{
    if (checkBox1.Checked) ryby.Add(seznam[0]);
    else if (checkBox2.Checked) ryby.Add(seznam[1]);
    else if (checkBox3.Checked) ryby.Add(seznam[2]);
    else if (checkBox4.Checked) ryby.Add(seznam[3]);
    else if (checkBox5.Checked) ryby.Add(seznam[4]);
    else if (checkBox6.Checked) ryby.Add(seznam[5]);
    else if (checkBox7.Checked) ryby.Add(seznam[6]);
    else if (checkBox8.Checked) ryby.Add(seznam[7]);
    else if (checkBox9.Checked) ryby.Add(seznam[8]);
    else ryby.Add(seznam[9]);
}

private void B_ok_Click(object sender, EventArgs e)
{
    Vybrat_ryby();
    Bitva bitva = new Bitva();
    bitva.Show(this);
}

private void Vytvoreni()
{
    int level;
    int speed;
    int health;
    int damage;
    Random nahoda = new Random();

    for (int i = 0; i < 10; i++)
    {

        level = nahoda.Next(0, 101);

        if (level >= 1 && level <= 8)
        {
            damage = level * 1;
            health = (level * 1) + (damage * 3);
            speed = 70;
        }
        else if (level >= 9 && level <= 17)
        {
            damage = Convert.ToInt32(Math.Round(level * 1.5));
            health = (level * 2) + (damage * 3);
            speed = 75;
        }
        else if (level >= 18 && level <= 24)
        {
            damage = level * 2;
            health = (level * 3) + (damage * 3);
            speed = 80;
        }
        else if (level >= 25 && level <= 33)
        {
            damage = Convert.ToInt32(Math.Round(level * 2.1));
            health = (level * 4) + (damage * 5);
            speed = 67;
        }
        else if (level >= 34 && level <= 41)
        {
            damage = Convert.ToInt32(Math.Round(level * 2.5));
            health = (level * 5) + (damage * 5);
            speed = 60;
        }
        else if (level >= 42 && level <= 49)
        {
            damage = Convert.ToInt32(Math.Round(level * 2.8));
            health = (level * 6) + (damage * 5);
            speed = 70;
        }
        else if (level >= 50 && level <= 58)
        {
            damage = Convert.ToInt32(Math.Round(level * 3.2));
            health = (level * 7) + (damage * 10);
            speed = 65;
        }
        else if (level >= 59 && level <= 65)
        {
            damage = Convert.ToInt32(Math.Round(level * 3.5));
            health = (level * 8) + (damage * 10);
            speed = 55;
        }
        else if (level >= 66 && level <= 74)
        {
            damage = level * 4;
            health = (level * 9) + (damage * 10);
            speed = 60;
        }
        else if (level >= 75 && level <= 83)
        {
            damage = Convert.ToInt32(Math.Round(level * 4.5));
            health = (level * 10) + (damage * 20);
            speed = 55;
        }
        else if (level >= 84 && level <= 92)
        {
            damage = level * 5;
            health = (level * 11) + (damage * 20);
            speed = 50;
        }
        else
        {
            damage = Convert.ToInt32(Math.Round(level * 5.5));
            health = (level * 12) + (damage * 20);
            speed = 50;
        }

        seznam.Add(new Ryba(level, damage, health, speed));
    }
}

private void Vyber_Load(object sender, EventArgs e)
{
    Vytvoreni();
}

A zde se mají data dostat (Bitva):

Vyber vyber = new Vyber();
        Ryba ryba1;
        Ryba ryba2;
        Ryba ryba3;

        private void Bitva_Load(object sender, EventArgs e)
        {
            ryba1 = vyber.ryby[0];
            ryba2 = vyber.ryby[1];
            ryba3 = vyber.ryby[2];

            L_lvl1.Text = ryba1.Level.ToString();
            L_lvl2.Text = ryba2.Level.ToString();
            L_lvl3.Text = ryba3.Level.ToString();
            L_dmg1.Text = ryba1.Damage.ToString();
            L_dmg2.Text = ryba2.Damage.ToString();
            L_dmg3.Text = ryba3.Damage.ToString();
            L_hp1.Text = ryba1.Health.ToString();
            L_hp2.Text = ryba2.Health.ToString();
            L_hp3.Text = ryba3.Health.ToString();

        }

Děkuju za odpovědi.

Editováno 5.6.2015 23:05
 
Odpovědět
5.6.2015 23:04
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na GangstaFish
Jan Vargovský:5.6.2015 23:22

Co třeba ošetřit, když vybral 2 a méně ryb?

if(vyber.ryby.Count < 3)
return;
...
 
Nahoru Odpovědět
5.6.2015 23:22
Avatar
GangstaFish
Člen
Avatar
Odpovídá na Jan Vargovský
GangstaFish:6.6.2015 7:42

No to není ani nutné, do toho druhého formu se dostane přes tlačítko a to je dostupné až zvolí přesně 3 ryby.

 
Nahoru Odpovědět
6.6.2015 7:42
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na GangstaFish
Jan Vargovský:6.6.2015 12:01

Jo už vidím tu chybu. Jsem na mobilu, tak si kdyžtak najdi jak předat data z formu do nového formu.

 
Nahoru Odpovědět
6.6.2015 12:01
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.