Tray Icon Problem mit meinem Programm

  • .NET (FX) 4.0
  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von BeatsleigherXDA.

    Tray Icon Problem mit meinem Programm

    Hallo zusammen,
    ich arbeite gerade an dem neusten Update für eine Zeitschaltuhr Software (Metro Timer) von mir und ich hänge bei einer bestimmten Funktion.

    Und zwar würde ich gerne dann, wenn man die Form minimiert, diese nicht mehr in der Taskleiste anzeigen und stattdessen ein Icon in der Tray einblenden, das einem die aktuelle Zeit anzeigt, die vergeht, bis heruntergefahren/neugestartet/abgemeldet/irgendwas wird. Dabei habe ich leider einige Probleme, von denen ich wissen wollte, ob jemand hier eine Lösung für mich hat.

    Das ist der bisherige Code für das Anzeigen des Icons:

    VB.NET-Quellcode

    1. Private Sub form_Minimize(sender As Object, e As EventArgs) Handles Me.SizeChanged
    2. If Me.WindowState = FormWindowState.Minimized Then
    3. Me.ShowInTaskbar = False
    4. trayIcon.Visible = True
    5. Else
    6. Me.ShowInTaskbar = True
    7. trayIcon.Visible = False
    8. End If
    9. End Sub


    Meine Fragen/Probleme:
    1. Das Minimieren und so weiter klappt ganz gut, aber wenn das Programm minimiert ist, wird unten links ein Schriftzug "Metro Timer 1.1" angezeigt (siehe Anhang 1) wie kann ich diesen entfernen ? (BEHOBEN)
    2. Wenn ich über das Icon in der Tray fahre, werden die Sekunden, Minuten und Stunden bis zum Beenden angezeigt. Ich habe einen Timer, der die Text-Eigenschaft des Trayicons aktualisiert, sobald sich die Zeit aktualisiert, aber wenn ich über das Icon fahre und mir die Zeit angezeigt wird, aktualisiert sich diese nicht dynamisch, sondern erst, wenn man den Cursor wieder weg und dann wieder darüber bewegt. Gibt es da eine Möglichkeit ?
    3. Kann ich irgendwie das maximale Zeichenlimit der Text-Eigenschaft des Trayicons umgehen ?
    4. Ich habe in dem MouseClick Ereignis des Trayicons stehen:

    VB.NET-Quellcode

    1. Me.WindowState = FormWindowState.Normal


    Es wird nach dem Klick darauf auch wieder normal angezeigt, aber ich kann nichts mehr auf der Form anklicken, könnt ihr euch erklären wieso das so ist ?

    Danke schonmal und liebe Grüße.


    Aus den Tipps und Tricks verschoben
    -Artentus
    Bilder
    • Metro Timer Error.PNG

      40,3 kB, 502×193, 144 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VBHero“ ()

    Hast du inzwischen darüber nachgedacht oder hat jemand anderes eine Lösung ?
    Ich selbst bin noch nicht weitergekommen, habe aber eigentlich auch nur mit ein paar Eigenschaften im Designer rumgewurschtelt, weil ich sonst eben keinen Ansatzpunkt kenne.
    @VBHero

    Wenn mich nicht alles täuscht, müsste es so gehen (habe gerade keinen Bock VS hochzufahren und ein neues Projekt zu erstellen, dafür):

    C#-Quellcode

    1. namspace Name.Program {
    2. public partial class Main : Form {
    3. private readonly NotifyIcon trayIcon;
    4. public Main() {
    5. trayIcon = new NotifyIcon();
    6. trayIcon.BalloonTipTitle = "Programm Wurde Minimiert";
    7. trayIcon.BalloonTipText = "Das Program XY wurde minimiert und läuft im Hintergrund.\nKlicken Sie auf dieses Symbol, um das Fenster wieder sichtbar zu machen";
    8. trayIcon.Text = "Programm XY";
    9. trayIcon.BalloonTipClicked += (s, evt) => { this.Show(); trayIcon.Hide(); }
    10. trayIcon.Click += (s, evt) => { this.Show(); trayIcon.Hide(); }
    11. this.Closing += (s, evt) => {
    12. if (MessageBox.Show(this, "Möchten Sie die Form in die Taskleiste verstecken?", "Schließen?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) {
    13. evt.Cancel = true;
    14. this.Hide();
    15. trayIcon.Show();
    16. }
    17. };
    18. }
    19. }
    20. }
    "Nichts ist unendlich, bis auf die menschliche Dummheit" - Albert Einstein
    "Man sollte nicht alles vertrauen, was im Netz steht" - Abraham Lincoln