Thema Datum  Von Nutzer Rating
Antwort
22.03.2022 11:49:56 xor
Solved
24.03.2022 18:46:33 Gast8802
NotSolved
25.03.2022 10:59:04 xor
NotSolved
25.03.2022 11:24:31 Gast45124
NotSolved
25.03.2022 13:02:31 Gast67157
NotSolved
25.03.2022 13:12:29 Gast52527
NotSolved
Rot Notifyicon bzw bitmap anhand Timer neu zeichnen lassen
25.03.2022 13:08:21 Gast44433
NotSolved
25.03.2022 14:29:27 xor
NotSolved
26.03.2022 15:39:46 Gast13341
NotSolved
26.03.2022 16:17:10 Trägheit
*****
NotSolved
26.03.2022 20:57:36 xor
NotSolved
28.03.2022 08:18:12 xor
NotSolved
04.04.2022 11:51:27 Gast38996
NotSolved
04.04.2022 15:09:15 xor
NotSolved
26.03.2022 21:08:55 xor
NotSolved

Ansicht des Beitrags:
Von:
Gast44433
Datum:
25.03.2022 13:08:21
Views:
383
Rating: Antwort:
  Ja
Thema:
Notifyicon bzw bitmap anhand Timer neu zeichnen lassen

main ist ja nur der Einstiegspunkt ins Programm.

Die Programm-Logik wird normalerweise in Klassen ausgelagert. In der main findet dann die Instanziierung und deren Aufruf statt.

etwa so:

namespace KalenderwocheImSystemTray
{
    internal class MyTray : IDisposable
    {
        private readonly Bitmap _bitmap = new Bitmap(16, 16);
        private readonly Graphics _graphics;
        private readonly NotifyIcon _ni = new NotifyIcon();
        private readonly System.Windows.Forms.Timer _timer;
        private bool _disposed;

        /// <param name="updateInterval">in milliseconds</param>
        public MyTray(int timerInterval)
        {
            //Timer erzeugen
            // ...

            //Contextmenu erzeugen [0]=Exit
            // ...

            //Notifyicon
            // ...
        }

        public void Dispose()
        {
            if (_disposed) return;

            _timer.Tick -= ReFreshIcon;

            _bitmap?.Dispose();
            _graphics?.Dispose();
            _ni?.Dispose();
            _timer?.Dispose();

            _disposed = true;
        }

        private void ReFreshIcon(object sender, EventArgs e)
        {
            // zu Testzwecken wird nicht die KW, sondern ablaufende Sekunden anhand vom Interval gezeichnet
            _graphics.Clear(Color.Transparent);
            _graphics.DrawString(DateTime.Now.AddSeconds(2).Second.ToString(), new Font("Arial", 10.0f), Brushes.White, 0, 0);
            _ni.Icon = Icon.FromHandle(_bitmap.GetHicon());
        }

        private void ContextMenuItemClose(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }

    class Program
    {
        public static void Main()
        {
            MyTray myTrayIcon = new MyTray(2000);

            Application.Run(); // runs application loop
            
            myTrayIcon.Dispose();
        }
    }
}

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
22.03.2022 11:49:56 xor
Solved
24.03.2022 18:46:33 Gast8802
NotSolved
25.03.2022 10:59:04 xor
NotSolved
25.03.2022 11:24:31 Gast45124
NotSolved
25.03.2022 13:02:31 Gast67157
NotSolved
25.03.2022 13:12:29 Gast52527
NotSolved
Rot Notifyicon bzw bitmap anhand Timer neu zeichnen lassen
25.03.2022 13:08:21 Gast44433
NotSolved
25.03.2022 14:29:27 xor
NotSolved
26.03.2022 15:39:46 Gast13341
NotSolved
26.03.2022 16:17:10 Trägheit
*****
NotSolved
26.03.2022 20:57:36 xor
NotSolved
28.03.2022 08:18:12 xor
NotSolved
04.04.2022 11:51:27 Gast38996
NotSolved
04.04.2022 15:09:15 xor
NotSolved
26.03.2022 21:08:55 xor
NotSolved