Předvánoční Black Friday Předvánoční Black Friday
Až 80% zdarma! Předvánoční BLACK FRIDAY akce. Více informací

Diskuze: WPF - Canvas MouseLeftButtonUp

C# .NET .NET (C# a Visual Basic) WPF - Canvas MouseLeftButtonUp American English version English version

Aktivity (3)
Avatar
Martin Vejvoda:30. července 22:37

Ahoj, dělám Game of Life s grafickým rozhraním a narazil jsem na jeden problém. Na vykreslování používám canvas, u kterého mám metody MouseMove, MouseLeftButtonUp a MouseLeftButton­Down. Pomocí MouseMove posunuju herní plochu, ale problém je, že na konci posunování se někdy zavolá MouseLeftButtonUp a to pouze v případě, když canvas "držím" za mrtvou buňku, ze které se tedy stane živá. Když ale "držím" canvas za živou buňku, tak se MouseLeftButtonUp nezavolá a buňka tedy stále žije (což je správně). Nevíte někdo, kdy se volá MouseLeftButtonUp a proč se mi zavolá jen v některých případech?

Odpovědět 30. července 22:37
matika > informatika
Avatar
krepsy3
Redaktor
Avatar
krepsy3:31. července 16:26

To může být tím, že se jedná o routovaný event, a živá buňka z nějakého důvodu "polyká" bubbling eventu. Zkus živé buňce nastavit metodu pro mouseleftbuttonup:

private void AliveCell_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
        e.Handled = false;
}

Pokud to nejde, napiš mi, jsem teď totiž na mobilu. Mohl jsem udělat chybku.

Editováno 31. července 16:27
Nahoru Odpovědět 31. července 16:26
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovídá na krepsy3
Martin Vejvoda:1. srpna 12:25

Zkusil jsem to zadat do canvas_MouseLef­tButtonUp() a nepomohlo to. Já tam nemám žádnou živou a mrtvou buňku, na kterou bych mohl kliknout. Prostě kliknu na canvas a ze souřadnic myši spočítám, jestli buňka žije nebo ne.
Problém jsem ale vyřešil tím, že při delším posunutí prostě zakážu změnu stavu buňky. Pamatuju si, kde jsem tlačítko stisknul a kde jsem ho uvolnil a z toho počítám vzdálenost. Nicméně stále nechápu, proč se metoda canvas_MouseLef­tButtonUp zavolá jen někdy.

Nahoru Odpovědět 1. srpna 12:25
matika > informatika
Avatar
krepsy3
Redaktor
Avatar
krepsy3:1. srpna 18:03

Možná, že kdybys poslal kód, šlo by na to přijít, takhle jsem mohl jenom hádat ;)

Nahoru Odpovědět 1. srpna 18:03
Programátor je stroj k převodu kávy na kód.
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.