ControlTipText   zodpovězená otázka

VB.NET, WPF, WinForms

Dobrý den,

nevíte prosim někdo jestli existuje v VB 2005 to co je v VBA jako ControlTipText? Aby když mám myš nad tlačítkem nebo labelou nebo na textboxem, aby se objevilo takovéto informativní hlášení? a pak to zmizí za určitou dobu, nebo když už myš nebude nad tlačítkem...

Předem děkuji za odpověď

Tomáš

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Přidejte si z ToolBox komponentu ToolTip a ve vlastnostech jednotlivých prvků pak najdete ToolTip on ToolTip1, kam zapíšete požadovaný text. Ve vlastnostech ToolTip1 si můžete nastavit mj. dobu zobrazování, barvy aj. vlastnosti - s Active lze tooltip vypnout / zapnout...

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

Super! Mockrát děkuji... :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

nevíte náhodou jak ten tooltip1 připojit k tlačítku, když je tlačítko vytvořeno dynamicky?

Děkuji,

PetrS

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pomocí metody SetToolTip, viz. http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuju a omlouvám se za blbý, lehce dostupný dotaz. Nevěděl jsem jak to hledat.

Díky,

PetrS

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak ten toolTip nejde, (neprisel jsem na to jak) dynamicky pridat ke komponente, kdyz ta komponenta byla pridana ?nedynamicky? (asi staticky) do projektu. Jinak to funguje bezvadně.

Díky za toolTip.

PetrS

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V návrhu projektu zkuste na formulář přidat tlačítko a jako příklad použijte tento kód. Po spuštění programu klepněte na tlačítko - přidá se nové a obě budou mít nápovědný text (TooTip)

Public Class Form1

  Dim toolTip1 As New ToolTip()

  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ' podle: 
    ' http://msdn.microsoft.com/en-us/library/system.windows.forms.tooltip.settooltip.aspx
    toolTip1.AutoPopDelay = 5000
    toolTip1.InitialDelay = 1000
    toolTip1.ReshowDelay = 500
    toolTip1.ShowAlways = True
    toolTip1.SetToolTip(Me.Button1, "Tlačítko vložené v návrhovém prostředí")
  End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
    With Button1
      .AutoSize = True
      .Text = "Původní tlačítko"
      .Left = Me.Width - (.Width + 20)
    End With
    Dim NoveTlacitko As Button = New Button
    Me.Controls.Add(NoveTlacitko)
    With NoveTlacitko
      .Text = "Nové tlačítko"
      .AutoSize = True
      .Top = Button1.Top - 30
      .Left = Button1.Left
    End With
    toolTip1.SetToolTip(NoveTlacitko, "Tlačítko vložené za běhu programu")
  End Sub

End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Omlouvám se za moje čecha. Pokud toolTip1 byl přidán "staticky" tak se mi ke komponentě přidané dynamicky nepovedlo toolTip1 přiřadit. Pokud je toolTip a komponenty přidány dynamicky za běhu programu, tak mi to funguje bezvadně. Nicméně mi to je dost jedno jakým způsobem ten toolTip přidám. :)

Díky za návrh!

PetrS

nahlásit spamnahlásit spam 0 odpovědětodpovědět

VB.NET je docela jedno, jakým způsobem ToolTip přidáte. Pokud se přidávají prvky z toolboxu, je to jen použití nástroje pro pohodlí programátora. Za běhu aplikace se prvek vytvoří také z kódu, tj. "dynamicky". Jen se o tu část kódu programátor nemusí starat, VB ji vygeneruje. Takže ve vašem kódu je někde chyba. Z "nepovedlo toolTip1 přiřadit" nelze nic zjistit.

Když v uvedeném příkladu z Form1_Load dáte řádek

    toolTip1.SetToolTip(Me.Button1, "Tlačítko vložené v návrhovém prostředí")

do Button1_Click, ostatní z Form1_Load a definici toolTip1 dáte pryč, přidáte ToolTip "staticky", tak upravený příklad bude plnit stejnou funkci jako jeho originál.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

...ten řádek není potřeba přemisťovat, ale nechat ve Form1_Load jako jediný. Pak bude úprava fungovat stejně, jako původní příklad :-)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky za odpověď.

PetrS

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback