Ustawianie zmiennej na podstawie kliknięcia myszką

0

Chciałbym napisać funkcjonalność, która po kliknięciu przycisku myszki czyli klik oraz puszczenie zmieni wartość zmiennej z 0 na 1 i zostawi tę wartość tak długo dopóki znowu nie kliknę. Kolejne kliknięcie powinno zmienić wartość na przeciwną.

Mam dostarczoną funkcję do obsługi zdarzenia ale poniższy kawałek kodu działa na takiej zasadzie, że jak kliknę przycisk i przytrzymam to wartość zmiennej jest zmieniona, ale puszczenie przycisku powoduje zmianę wartości a ja chciałbym zachować stan.

	if (red == 0) {
		red = 1;
	}
	else if (red == 1) {
		red = 0;
	}
0

Uzyj zdarzenie Control.MouseUp
Kod w zdarzeniu wykona sie po zwolnienu klawisza myszki.

poczytaj o tym zdarzeniu na stronie microsoftu (chcialem wkleic link ale sie nie da :( )

0

Tak jak mówi kolega wyżej - Control::MouseUp powinno wpasować się w Twój scenariusz.

0

Nie bierzecie pod uwagę sytuacji, w której użytkownik wciska LPM gdzieś indziej, trzymając go przesuwa kursor nad docelowy element i puszcza LPM. Wasza sugestia pozwoli na klikanie w elementy w niepoprawny sposób. Tymczasem pytacz zaznaczył pogrubionych tekstem, że:

Krzywy Lew napisał(a):

Chciałbym napisać funkcjonalność, która po kliknięciu przycisku myszki czyli klik oraz puszczenie […]

Tak więc najpierw należy użyć Control.MouseDown, który zapamięta, że nad elementem wciśnięto przycisk, a w Control.MouseUp sprawdzi tę flagę i jeśli jest zapalona to wykona dany kod i zgasi flagę. Warto było by też oprogramować sytuację, w której użytkownik wciska LPM nad kontrolką, trzymając ten przycisk zabiera kursor znad elementu, następnie wraca nim nad element i puszcza. Czy wtedy też ma się wykonać docelowy kod?

I jeszcze jedna rzecz:

if (red == 0) {
    red = 1;
}
else if (red == 1) {
    red = 0;
}

Słyszał o czymś takim jak xor? ;)

red ^= 1;

Jeśli się nie mylę to tyle wystarczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1