Diskuze: Pexeso v C sharp
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Pokud to chápu správně, tak každá metoda by měla vypisovat něco jiného a hlavně by měla měnit vlastnosti jiného buttonu, nevidím důvod proč nenapsat 16 metod, hlavně když budou napojená každá na jiný click event
moc nechápu jak to bude fungovat, ale jestli myslíš toto:
private void ClickHandler(object sender, EventArgs e)
{
Button btnClicked = sender as Button;
btnClicked.....
}
Nebo si těch 16 tlačítek vygeneruj ... a při vytvářeni nastav metody ....
for (int i = 0; i < 16; i++)
{
Button btn = new Button();
btn.Text = "";
btn.Click += new EventHandler((object obj, EventArgs args) =>
{
btn.Text = karty[i];
...
});
}
Tvoje řešení má jednu chybu - pro každé tlačítko vytváříš novou
anonymní metodu.
Při 256 (16*16 pole) tlačítkách to možná až tak moc nevadí, ale
řekněme, že ten počet poroste.
Co takhle vytvořit jednu metodu pro všechna tlačítka a každé tlačítko rozlišovat pomocí vlastnosti Tag, přičemž instanci třídy Button získáš přetypováním parametru sender?
Třeba takto:
//Cyklus
for (int i = 0; i < 16; i++)
{
Button btn = new Button();
btn.Text = "";
btn.Tag = karty[i];
btn.Click += ButtonClick;
//...
}
//Handler
void ButtonClick(object sender, EventArgs e){
if(!(sender is Button))
return;
Button btn = sender as Button;
btn.Text = karty[btn.Tag as int];
//...
}
Zobrazeno 5 zpráv z 5.