kostenloser Webspace werbefrei: lima-city


VB.NET Notify-Icon

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    beph19

    beph19 hat kostenlosen Webspace.

    Hallo zusammen
    Ich will bei meinem Programm (VB.NET), dass wenn man es minimiert, ein Tray-Icon angezeigt wird (in der Taskleiste, links von der Uhr). Dies funktioniert auch. Doch wenn man darauf doppelklickt, soll das Fenster wieder angezeigt werden, bei einem einfachen Klick soll jedoch eine Info-Box angezeigt werden.
    Und hier liegt mein Problem: Bei einem einfachen Klick wird wie gewünscht, die Box angezeigt, bei einem Doppelklick wird jedoch ebenfalls die Box angezeigt statt das Fenster wieder geöffnet.

    Hier der Code:
    Private Sub NotifyIcon1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles NotifyIcon1.Click
        NotifyIcon1.ShowBalloonTip(2000, "Titel", "Text", ToolTipIcon.Info)
    End Sub
    
    Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick
        Me.Visible = True
        Me.WindowState = FormWindowState.Normal
        NotifyIcon1.Visible = False
    End Sub


    Was mach ich falsch, oder geht das einfach nicht?

    Gruss
    beph19
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. d*****k

    Ich kann nun nicht mit VB-Erfahrung punkten, aber die Events sind ja immer die selben. In Delphi jedenfalls war es bei mir damals so, dass Windows einfach nur Click-Events an das Programm sendet - bei Doppelklick eben zwei.

    Du könntest eventuell die Zeit zwischen zwei Klicks messen und wenn diese kleiner als... eine halbe Sekunde? ist, die Routine für den Doppelklick ausführen. So würde ich das ganze umgehen. :cool:
  4. @beph19:

    1) prüfe, ob du überhaupt in die DoubleClick-Methode hineinkommst (Breakpoint)
    2) ist dies der Fall, dann versuche es evtl. mal mit Me.Show() anstelle von Me.Visible = True. Dies könnte den gewünschten Effekt mit sich bringen - bin mir da aber auch nicht 100%ig sicher, habe schon lange nichts mehr mit VB gemacht. Das Notify-Problem hatte ich aber auch mal...
  5. Autor dieses Themas

    beph19

    beph19 hat kostenlosen Webspace.

    1) Programm kommt nie zum Breakpoint
    2) Der Code funktioniert an sich; wenn ich das Click-Event entferne, wird das Fenster angezeigt.
  6. Hallo beph19,

    das Klick-Ereignis wird bei jedem Maus-Klick ausgelöst. Wenn zwei Maus-Klicks innerhalb einer bestimmten Zeitspanne erfolgen, dann wird zusätzlich ein DoubleClick-Ereignis erzeugt. Damit es zum DoubleClick-Ereignis kommt muss der Klick aber zweimal an das selbe Fenster gesendet werden. Und genau da ist wohl das Problem.
    Wenn Du das BalloonTip-Fenster anzeigst, dann geht der Fokus auf das BalloonTip-Fenster über und der zweite Klick kommt nicht mehr beim TrayBar-Icon an. Daher wird das DoubleClick-Ereignis nicht ausgelöst.
    Du kannst jetzt einerseits versuchen den BalloonTip-Zeitverzögert anzuzeigen. D.h. wenn ein Klick-Ereignis eintritt, dann startest Du einen Timer mit z.B. 400ms. Wenn ein DoubleClick-Ereignis eintritt, dann stoppst Du den Timer und zeigst das Fenster. Wenn das Timer-Ereignis eintritt, dann zeigst Du den BalloonTip.
    Falls das auch nicht funktioniert, dann kannst Du immer noch BalloonTip bei rechter Maustaste und Fenster bei (doppelter) linker Maustaste machen.
  7. Autor dieses Themas

    beph19

    beph19 hat kostenlosen Webspace.

    Ich habe es nun anders gelöst:
    Bei einem Linksklick wird auf jeden Fall der BalloonTip angezeigt. Bei einem Klick auf den BalloonTip wird das Fenster angezeigt. So wird bei einem Doppelklick auf das Icon das Fenster angezeigt.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!