Thema Datum  Von Nutzer Rating
Antwort
Rot Notifyicon bzw bitmap anhand Timer neu zeichnen lassen
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
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:
xor
Datum:
22.03.2022 11:49:56
Views:
485
Rating: Antwort:
 Nein
Thema:
Notifyicon bzw bitmap anhand Timer neu zeichnen lassen

Hallo zusammen,

ich möchte die Kalenderwoche im Systemtray als Icon anzeigen lassen.

Ein Timer wird eingesetzt, um zu erkennen, ob sich die Kalenderwoche geändert hat.

Wenn ja, dann neu zeichnen. Soweit so gut - Programm funktioniert.

 

Mich beschäftigen aber folgende Fragen:

a) Er wird so ziemlich alles in der Main() abgearbeitet. Spricht in diesem Fall etwas dagegen?

b) Ich arbeite mit private static Variablen im Klassenscope. Ist das ok oder besser anders machen?

c) Eine Static-Methode hängt am .Tick()-Event des Timers, um neu zu zeichnen. Soweit ok oder geht es auch eleganter?

 

Um weitere Einschätzungen wäre ich dankbar.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Windows.Forms;


namespace KalenderwocheImSystemTray
{
    class Program
    {
        private static Bitmap bitmap = new Bitmap(16, 16);
        private static Graphics graphics = Graphics.FromImage(bitmap);
        private static NotifyIcon ni = new NotifyIcon();

        static void Main(string[] args)
        {
            //Timer erzeugen
            Timer timer = new Timer();
            timer.Interval = 2000;
            timer.Tick += new EventHandler(ReFreshIcon);
            timer.Enabled = true;

            //Contextmenu erzeugen [0]=Exit
            ContextMenu cm = new ContextMenu();
            cm.MenuItems.Add("Close", new EventHandler(Close));

            //Notifyicon
            ni.ContextMenu = cm;
            ni.Visible = true;

            Application.Run();
        }

        public static 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 static void Close(object sender, EventArgs e)
        {
            Environment.Exit(0);
        }
    }
}

 

 

gruß

xor

 

 


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
Rot Notifyicon bzw bitmap anhand Timer neu zeichnen lassen
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
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