Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Tray-Application über Windows Form steuern
Life
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

Tray-Application über Windows Form steuern

beantworten | zitieren | melden

Hallo liebe C#-Gemeinde,


ich schreibe zur Zeit ein kleines Projekt in dem das Programm hauptsächlich als Tray-Application läuft.

Nun möchte ich per Rechtsklick auf dem Traysymbol ein neues Fenster öffnen, welches dann über einen Button das Traysymbol ändert.

Die Tray-Application läuft als eigene Klasse und wird beim Programmstart in der Main() aufgerufen.

Wie schaffe ich es nun auf das Symbol der einen Instanz der Klasse zuzugreifen ohne eine neue Instanz zu erzeugen? (Sonst erhalte ich zwei Symbole in der Leiste)

Form1 erbt ja bereits von Form (Form1 : Form)

Vielen Dank im Voraus!

Gruß Life
private Nachricht | Beiträge des Benutzers
felix
myCSharp.de - Member



Dabei seit:
Beiträge: 174

beantworten | zitieren | melden

Hi,

innerhalb deiner Klasse (die auch das Tray-Icon bereit stellt), registrierst du doch das Event für den Mausklick, oder nicht? Dann kannst du doch auch genau an dieser Stelle deine 2. Form öffnen und auf den Button-Click reagieren. Im Grunde genauso, wie in jeder anderen Forms-Anwendung auch.

Gruß,
Felix
private Nachricht | Beiträge des Benutzers
Life
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

beantworten | zitieren | melden

Das ist richtig das ich über ein Contextmenu die Windows Form öffnen.
In dieser Form hat das ButtonEvent Click aber keinen Einfluss auf das bereits vorhandene Symbol.

Ich kann zwar natürlich eine neue Instanz der Klasse erstellen, was ich aber nicht will.

Tray-App Klasse:

public class MyNotifyIconApplication
{
     private NotifyIcon notico; //Mein Icon

     Form1 form1 = new Form1();

     public MyNotifyIconApplication()
      {
            notico = new NotifyIcon()
       }

        void menu_Click(object sender, EventArgs e)
        {            
            form1.ShowDialog();
        }
}

public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            StatusAbfragen();          
        }

         private void button2_Click(object sender, EventArgs e)
        {
            /////Ändere SYMBOL der Tray-APP

        }
    }

Wie lässt sich ein Bezug zum Tray-Objekt herstellen ohne ein neues zu erzeugen?
Geht das denn überhaupt so einfach?
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.358

beantworten | zitieren | melden

Das ist ein klassisches Form-Kommunikations-Problem: [FAQ] Kommunikation von 2 Forms

Übergib einfach das NotifyIcon als Referenz an das andere Form oder aber der bessere Weg wäre, daß du ein Event erstellst ([FAQ] Eigenen Event definieren / Information zu Events (Ereignis/Ereignisse)) und von deiner Tray-Klasse aus behandelst.
private Nachricht | Beiträge des Benutzers
felix
myCSharp.de - Member



Dabei seit:
Beiträge: 174

beantworten | zitieren | melden

Wie Th69 schon gesagt hat ...
du musst natürlich in deiner Tray-Klasse das Icon ändern. Du musst nur dafür sorgen, dass deine 2. Form genügend Informationen bereitstellt, damit du diese aus deiner Tray-Klasse heraus weiterverarbeiten kannst.
private Nachricht | Beiträge des Benutzers