Laden...

Tray-Application über Windows Form steuern

Erstellt von Life vor 11 Jahren Letzter Beitrag vor 11 Jahren 931 Views
L
Life Themenstarter:in
2 Beiträge seit 2013
vor 11 Jahren
Tray-Application über Windows Form steuern

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

F
174 Beiträge seit 2007
vor 11 Jahren

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

L
Life Themenstarter:in
2 Beiträge seit 2013
vor 11 Jahren

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?

4.939 Beiträge seit 2008
vor 11 Jahren

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.

F
174 Beiträge seit 2007
vor 11 Jahren

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.