Tlačítko a dvě různé metody po kliknutí (c#) – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Tlačítko a dvě různé metody po kliknutí (c#) – .NET – Fórum – Programujte.comTlačítko a dvě různé metody po kliknutí (c#) – .NET – Fórum – Programujte.com

 

jfk0
Newbie
11. 4. 2010   #1
-
0
-

Nazdar lidi,
řeším takovýto problém - mám tlačítko, u kterého bych potřeboval, aby mi po kliknutí na něj spouštělo různé metody v závilosti na tom, jakou má právě funkci. Např.: něco obdobného jako u přehrávačů - tlačítko má funkci PLAY, po stisku se spustí metoda play(), změní se jeho vlastnost text na PAUSE a potřebuju, aby se teď po jeho stisku spustila metoda pause().
Sice to mám funkční - mám pomocnou proměnnou a pak v té metodě, která se volá po stisku tlačítka se v závislosti na obsahu té pomocné proměnné spouští konkrétní větev. Ale myslím si, že by to mělo "snad" jít udělat i nějak elegntněji. Předem díky za rady.

Nahlásit jako SPAM
IP: 93.92.51.–
Chrasty
~ Redaktor
+4
Posthunter
11. 4. 2010   #2
-
0
-

Děláš to dobře, tohle se vážně řeší (alespoň co já vím) pomocí nějaké boolovské proměnné "paused", která když je nastavená na true, tak se pak zavolá metoda Play a ta proměnná se nastaví na false.

Nahlásit jako SPAM
IP: 193.179.196.–
11. 4. 2010   #3
-
0
-

Samozřejmě bys mohl mít dvě metody, ale pomocná proměnná je podle mě lepší postup.

Nahlásit jako SPAM
IP: 89.203.157.–
Dušan Janošík | web: djanosik.cz, @djanosik
jfk0
Newbie
11. 4. 2010   #4
-
0
-

OK, budu se držet vašich rad a nechám to tak jak mám. Díky za pomoc

Nahlásit jako SPAM
IP: 93.92.51.–
velurex0
Stálý člen
11. 4. 2010   #5
-
0
-

Na tom jak to řešíš není nic špatného, případně můžeš místo té pomocné použít přímo vlastnost Tag toho tlačítka.

Nahlásit jako SPAM
IP: 213.191.119.–
16. 4. 2010   #6
-
0
-

Zdravím forum.
Tohle je přeci typický kandidát na DesignPattern Command, nebo ne?! V C# se taková věc vyrobí celkem snadno pomocí delegátů.



public class Radio
{
protected delegate void DefinedAction();
protected DefinedAction selectedAction;

public static void Main(string[] args)
{
Radio radio = new Radio();
radio.PlayPause();
radio.PlayPause();
radio.PlayPause();
}

public Radio()
{
selectedAction = new DefinedAction(Play);
}

public void PlayPause()
{
selectedAction();
}

protected void Play()
{
System.Console.WriteLine("Play");
selectedAction = new DefinedAction(Pause);
}

protected void Pause()
{
System.Console.WriteLine("Pause");
selectedAction = new DefinedAction(Play);
}
}

Co vy na to?

Nahlásit jako SPAM
IP: 81.201.60.–
MZetko0
Stálý člen
19. 4. 2010   #7
-
0
-

To Petr.Hribal : Souhlas ;-)

Nahlásit jako SPAM
IP: 85.160.166.–
"Přirozená inteligence bude umělou brzy překonána. Přirozenou blbost však umělá nemůže nahradit nikdy"
Jára da CIMRMAN
http://www.newgame.cz
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 24 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý