IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Mediel
Tvůrce
Avatar
Mediel:1.11.2012 23:36

Ahoj přátelé,

za běhu vytvářím tlačítka a i jeho událost on click.

takto vytvářím tlačítka:

private void PridejPoleDoSachovnice(int x, int y, int barva, int cisloPolicka)
        {
            Button policko = new Button();
            policko.Size = new Size(50, 50);
            policko.Location = new Point(x * 50, y * 50 + 25);
            policko.Click += new EventHandler(policko_Click);
            policko.Tag = y + "|" + x;
            if (barva == 0)
            {
                policko.BackColor = Color.White;
            }
            else
            {
                policko.BackColor = Color.Black;
            }
            seznamPolicek.Add(policko);

        }

takto vypadá metoda Click:

private void policko_Click(object sender, EventArgs e)
        {
            // zde bych potřeboval přistupovat k tlačítku na které jsem kliknul a jeho vlastnosti Tag. Můžete mi prosím někdo pomoc?
        }
Odpovědět
1.11.2012 23:36
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Mediel
David Hartinger:2.11.2012 12:49

Už jsem ti chtěl napsat jakou máš otázku a ona je v komentáři :D Tlačítko máš v tom sender, jen si ho musíš přetypovat na Button.

Nahoru Odpovědět
2.11.2012 12:49
New kid back on the block with a R.I.P
Avatar
Mediel
Tvůrce
Avatar
Mediel:2.11.2012 12:50

A přetypovat? Jak přetypovat? Jako že místo sender tam dám button?

Nahoru Odpovědět
2.11.2012 12:50
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Mediel
matesax:2.11.2012 13:48
sender as Button

třeba:

Button senderAsButton = sender as Button;

nebo:

string senderText = (sender as Button).Text;

...

Sender = odesílatel... A protože může mít mnoho typů, je přenášen v objektu - ten je třeba přetypovat - třeba na Control - nebo přímo na daný typ Controlu...

Editováno 2.11.2012 13:51
 
Nahoru Odpovědět
2.11.2012 13:48
Avatar
Mediel
Tvůrce
Avatar
Mediel:2.11.2012 16:10

Diky :) Skvele :)

Nahoru Odpovědět
2.11.2012 16:10
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Mediel
David Hartinger:3.11.2012 11:30

Mohlo by fungovat i (Button)sender­.Text. To je přetypování a znamená to změnu rozhraní objektu. Samozřejmě v tom objektu musí dané rozhraní být, jinak program upadne. AS by mělo dělat to samé, jen v případě neúspěchu vrátí null místo výjimky.

Nahoru Odpovědět
3.11.2012 11:30
New kid back on the block with a R.I.P
Avatar
Doupak
Člen
Avatar
Odpovídá na David Hartinger
Doupak:4.11.2012 21:01

Takto by pretovani neslo kvuli priorite operatoru. Operator tecka ma vetsi prioritu nez pretypovani. Takze by to muselo byt takto: ((Button)sender)­.Text = "xyz";

 
Nahoru Odpovědět
4.11.2012 21:01
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Doupak
David Hartinger:4.11.2012 21:05

Tohle se mi vždycky pletlo, dík :)

Nahoru Odpovědět
4.11.2012 21:05
New kid back on the block with a R.I.P
Avatar
Jirka D
Člen
Avatar
Odpovídá na matesax
Jirka D:16.10.2014 14:59

ahoj, potřebuji nasměrovat... mám dynamicky vytvořené button s tím, že mají název např. button3; button5; button9 atd. současně s nimi jsou vytvořené label se stejným názvem tz. label3; label5; label9 .... po kliknutí na jakýkoliv button potřebuji změnit i label který k němu náleží. tuším, že to bude přes sender ale netuším jak ... díky za pomoc

 
Nahoru Odpovědět
16.10.2014 14:59
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Jirka D
Jan Vargovský:16.10.2014 20:30

Máš 2 možnosti:

  1. Udělat si user contorl, do něj hodit 2 tlačítka a když klikneš na tlačítko tak máš v instanci jediný label, který k němu patří.
  2. ze sendera si vzít jeho vlastnost Name, replacnout "button" -> "label" a vyhledat takový název v kolekci Controls (pomocí Find()).
 
Nahoru Odpovědět
16.10.2014 20:30
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 10 zpráv z 10.