Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Kontrolka button w Visual Basic-u 2010

Carek 15 Kwi 2012 19:40 2260 7
  • #1 15 Kwi 2012 19:40
    Carek
    Poziom 11  

    Witam
    Mam taki problem. Potrzebuję, aby procedura kontrolki BUTTON była wykonywana cały czas, gdy najadę na nią myszą i trzymam przyciśnięty lewy przycisk. Po zwolnieniu przycisku procedura wychodzi z nieskończonej pętli. Czy takie coś jest możliwe? Będę wdzięczny za sugestie w tej kwestii. :)

    0 7
  • #2 17 Kwi 2012 17:29
    LED5W
    Poziom 32  

    Może coś takiego:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    Do czego chcesz to wykorzystać?

    0
  • #3 02 Maj 2012 17:38
    Carek
    Poziom 11  

    Witam
    Niestety nie. Wydaje mi się, że Microsoft Visual Studio 2010 Express nie udostępnia
    takiej funkcji, jaką potrzebuję. Przejrzałem niemal wszystkie możliwości i odpuściłem
    na razie temat.
    Pozdrawiam

    0
  • #4 02 Maj 2012 19:16
    pallid
    Poziom 20  

    W mouseDown() sprawdz, czy kliknieto LPM. Jesli tak, wywolaj petle:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    W mouseUp() ustaw running = False
    HTH. Pozdr.

    0
  • #5 01 Lip 2012 16:28
    Carek
    Poziom 11  

    Witam
    Rozwiązałem ten problem w następujący sposób:
    1. Utworzyłem najpierw jedną kontrolkę np: Button1 i nadałem jej odpowiednie
    właściwości.
    2 Utworzyłem dokładną kopię pierwszej kontrolki Np: Button2.
    3. Następnie wygenerowałem zdarzenia do tych kontrolek w kodzie programu
    i umieściłem je jedna nad drugą. Button1 zostało zakryte przez Butto2 i
    oto mi chodziło.
    4. W tytule każdego zdarzenia właściwość MouseClick zmieniłem odpowiednio:
    a). Dla Button1 zmieniłem na: MouseUp lub MouseLeave
    b). Dla Button2 zmieniłem na: MouseDown lub MouseHover.
    5. W zdarzeniu Butto2 piszemy:

    Button2.Hide() ' i nic więcej


    Ukrywamy Button2 odsłaniając Button1. Skutek jest taki, że najeżdżając
    myszą na przycisk spowodujemy wykonywanie procedury dla Button1.
    W kodzie zdarzenia Button1 umieszczamy nieskończoną pętlę (to ważne !),
    która zostanie przerwana w momencie puszczenia przycisku myszy dla
    MouseUp lub opuszczenia przez kursor pola Button1 dla MouseLeave
    Należy pamiętać, by na końcu procedury dla zdarzenia Butto1 umieścić
    następujące polecenie:

    Button2.Show() ' Button1 znowu zostanie zasłonięty przez Button2

    Powyższy algorytm wykorzystałem dla aplikacji tworzonej w
    Visual Basic 2010 Express

    0
  • #6 01 Lip 2012 18:27
    LED5W
    Poziom 32  

    Carek. Zacząłeś rozmowę przez PW, potem napisałeś odpowiedź na forum nie odpowiadając na moją PW, a teraz podajesz jakieś moim zdaniem dziwne rozwiązanie.

    Wobec tego pozwolę sobie zacytować fragmenty z PW:

    Carek napisał:
    To ma być coś w rodzaju stopera, ale do krótkich czasów, gdzie nie ma czasu
    na podwójne klikanie przyciskami. Dla tego najwygodniej byłoby nacisnąć "buttona",
    przytrzymać odpowiedni czas (ułamek sekundy) i uzyskać pomiar czasu od
    naciśnięcia do puszczenia "buttona".

    LED5W napisał:
    W .NET jest taka klasa Stopwatch. ;)
    Możesz ją wykorzystać tak:
    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    Chciałbym, abyś wyjaśnił mi dlaczego wg. Ciebie takie rozwiązanie nie jest dobre.

    0
  • #7 03 Lip 2012 08:38
    Carek
    Poziom 11  

    Witam
    Twoja propozycja jest napisana prawdopodobnie w języku C, a ja go
    nie rozumiem. Posługuję się językiem Basic.
    Pozdrawiam

    0
  • #8 03 Lip 2012 18:24
    LED5W
    Poziom 32  

    Carek napisał:
    Twoja propozycja jest napisana prawdopodobnie w języku C, a ja go
    nie rozumiem. Posługuję się językiem Basic.
    Przecież jest napisane, że to C#. Nie bardzo wiem czego tu nie rozumiesz. Deklaracja zmiennej stopwatch klasy Stopwatch, a w obsłudze zdarzenia MouseDown i MouseUp odpowiednio uruchomienie i zatrzymanie (+reset) stopera.

    W VB będzie to wyglądało mniej więcej tak:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0