2009-07-06 11 views
9

Aby spełnić wymaganie, muszę wyświetlać etykietkę narzędzi ręcznie przez 30 sekund. Według msdn po prostu muszę użyć metody "Show".C# Etykietka narzędziowa nie pojawia się w "Pokazie"

toolTip.Show(QuestionHelpText, btnHelp, 30000); 

Ale tylko dostać standardowego zachowania podpowiedzi, co oznacza, że ​​pojawi się komunikat o pół sekundy po moim kliknięcie (tylko dlatego, że wskaźnik myszy znajduje się jeszcze nad przyciskiem). Próbowałem niektóre warianty, takie jak:

toolTip.Show(QuestionHelpText, btnHelp); 

ale nadal nic się nie dzieje.

Czy ktoś ma pomysł, dlaczego tak jest?

Dzięki

Odpowiedz

12

Znam proste obejście

umieścić Lable (nazwijmy go labelHelp) z pustym tekstem pobliżu Twojego przycisku

Poniższy kod powinien działać

private void btnHelp_Click(object sender, EventArgs e) 
    { 
     toolTip.Show(QuestionHelpText, labelHelp, 3000); 
    } 
+0

dlaczego działa na etykiecie, ale nie na przycisku? – lostiniceland

+6

będzie działać dla każdej kontroli. Rob powiedział poprawnie, że toolTip.Show jest metodą blokowania. więc jeśli jest używany wewnątrz modułu obsługi zdarzeń (tj. wewnątrz btnHelp_Click) tego samego elementu sterującego, nie będzie działał zgodnie z oczekiwaniami. Sztuką jest wywołanie toolTip. Pokaż inną kontrolę. Innym rozwiązaniem może być timer i uruchomienie toolTip.Show asyncroneosuly (na przykład w btnHelp_Kliknij, aby uruchomić timer przez 0,1 sekundy, a następnie wywołać toolTip.Show w przypadku timera). Używanie drugiego elementu sterującego jest dla mnie najłatwiejszym rozwiązaniem. –

+0

dzięki. teraz to jest jasne – lostiniceland

2

Gdzie jest "etykietka" oświadczył?

MSDN nie wskazuje (na ToolTip.Show Method documentation), że metoda Show jest wywołaniem blokującym, więc jeśli deklarujesz toolTip w metodzie, a następnie zaraz po wyjściu z metody, to toolTip wypadnie poza zakres , powodując, że nie renderuje się ani nie znika.

+0

Etykietkę narzędzia używa się w sterowaniu użytkownika, tak zadeklarowaną w Initiali zeComponent – lostiniceland

0

myślę, że trzeba ustawić właściwość initialDelay wskazówki narzędzia

Powiązane problemy