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.

[C#] TollTip - wyświetlanie podpowiedzi w zalezności od zawartości obiektu

szczepikrybnik 27 Gru 2011 08:28 1761 5
  • #1 27 Gru 2011 08:28
    szczepikrybnik
    Poziom 12  

    Witam,
    używam toolTip do wyświetlenia podpowiedzi (np. po najechaniu na label-a), ale chciałbym by pomoc wyświetlona była tylko w niektórych przypadkach, np gdyby label wyświetlał tekst "111" a w innych nie, czy jest jakiś konkretny sposób by to uczynić?
    z góry dziękuję za pomoc, pozdrawiam

    0 5
  • #2 27 Gru 2011 10:47
    wiesniak
    Poziom 31  

    Dość specyficzny problem. Chyba najprościej byłoby stworzyć własną klasę dziedziczącą po ToolTip, która w momencie łączenia z kontrolką przypinała by się do zdarzenia TextChanged labela. Przy zmianie tekstu, wyświetlanie podpowiedzi byłoby włączanie lub wyłączane z wewnątrz klasy.

    0
  • #3 27 Gru 2011 13:56
    marcinj12
    Poziom 40  

    Możesz w metodzie która powoduje zmianę tekstu na labelu programowo ustawiać tekst do wyświetlenia metodą toolTip1.SetToolTip(...) lub go wyłączać "ustawiając" pusty ciąg znaków.

    Jeżeli warunków jest więcej, możesz napisać własną metodę, którą wywołasz po wykonaniu metody zmieniającej teksty, a która sprawdzi i ustawi wszystkie podpowiedzi automatycznie, zależnie od warunków.

    Wreszcie, Tooltip ma zdarzenie Popup, wykonywane w momencie "wyskakiwania" podpowiedzi. Wewnątrz niego możesz odwołać się do powiązanej kontrolki (nazwy, tekstu). Podobnie jak zamykanie formy, można je odpowiednio wcześniej przechwycić i anulować.
    Czyli możesz zrobić coś w tym stylu:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    Kombinacją warunków if lub switch dla e.AssociatedControl.Name i e.AssociatedControl.Text można rozbudować system podpowiedzi według własnych oczekiwań...

    0
  • #4 28 Gru 2011 09:23
    szczepikrybnik
    Poziom 12  

    Witam,
    dziękuję za pomoc, pojawił mi się niestety jeszcze jeden problem, a mianowicie
    w miejscu gdzie zmieniam tekst przypisuje "opis pomocy"

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    i wszystko jest ok, ale gdy minie czas przeznaczony na wyświetlenie pomocy pomoc znika i po kolejnym najechaniu na labela juz sie nie pojawia, jeżeli w trakcie wyświetlania zjadę myszką na inna część formy i powrócę na labela to pomoc ponownie sie pojawi, pewnie o czymś nie wiem , więc ponownie liczę na pomoc,
    pozdrawiam.

    0
  • Pomocny post
    #5 28 Gru 2011 12:41
    marcinj12
    Poziom 40  

    To bug występujący w Windows XP (w Win7 oraz w Viście już nie występuje). Jedynym sensownym sposobem na jego obejście jest podpięcie do labela zdarzenia MouseEnter z takim kodem:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Ewentualnie można wydłużyć czas wyświetlania podpowiedzi AutoPopDelay na maksymalną wartość, bodaj 30000 (30s.)

    0
  • #6 02 Lut 2012 08:23
    szczepikrybnik
    Poziom 12  

    problem rozwiązany więc temat zamykam, pozdrawiam.

    0