Autor Beitrag
mrrioes
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 07.09.14 19:23 
Hey,

ich bin jetzt auch mal mit der C# Programmierung angefangen. Läuft soweit ganz gut, erstes Projekt war ein klassischer Taschenrechner.
Ich habe in dem Projekt jetzt ein notifyIcon hinzugefügt. Klappt super! Allerdings möchte ich in einer Checkbox die Benachrichtigung im Windows Tray aktivieren und deaktivieren.
Also:
Wenn Checkbox mit Haken: NotifyIcon soll aktiviert sein und eine Benachrichtigung im Tray sein.
Wenn Checkbox ohne Haken: Keine Benachrichtigung im Tray.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
         private void notifyIcon3_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (this.WindowState == FormWindowState.Normal)
            {
                this.WindowState = FormWindowState.Minimized;
                notifyIcon3.BalloonTipText = ("Dein Taschenrechner wurde minimiert!");
                notifyIcon3.ShowBalloonTip(750);
            }
            else
            {
                this.WindowState = FormWindowState.Normal;
                notifyIcon3.BalloonTipText = ("Dein Taschenrechner wurde maximiert!");
                notifyIcon3.ShowBalloonTip(750);
            }
        }


Wie kann ich das hier mit einer If Abfrage (Checkbox) versehen?

Beste Grüße!

Achja, es gibt nur ein NotifyIcon, nicht 3. Hab damit nur rumexperimentiert und war dann zu faul, es auf notifyIcon1 umzubenennen ;)
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: So 07.09.14 20:04 
Hallo und :welcome:

Das kannst du ganz leicht mit der notifyIcon.Visible Eigenschaft lösen. Wenn deine Checkbox ausgewählt ist, setzt du den Wert auf true. Andernfalls auf false.
Hier ist noch ein Link mit einem Beispiel, welches deinem Problem entsprechen sollte.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler

Für diesen Beitrag haben gedankt: mrrioes
mrrioes Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 07.09.14 20:28 
Vielen Dank, hatte das halbe Internet durchsucht, aber natürlich die Seite nicht gefunden ;D

Für alle weiteren Anfänger, die das selbe Problem (hatten), hier der Code, der bei mir funktioniert!

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
        private void notifyIcon3_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (this.WindowState == FormWindowState.Normal)
            {
                this.WindowState = FormWindowState.Minimized;
                notifyIcon3.BalloonTipText = ("Dein Taschenrechner wurde minimiert!");
                notifyIcon3.ShowBalloonTip(750);
            }
            else
            {
                this.WindowState = FormWindowState.Normal;
                notifyIcon3.BalloonTipText = ("Dein Taschenrechner wurde maximiert!");
                notifyIcon3.ShowBalloonTip(750);
            }
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            this.notifyIcon3.Visible = false;
        }


Beste Grüße & vielen Dank!
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: So 07.09.14 20:43 
Ich will dich ja nicht enttäuschen, aber so wird es nicht funktionieren ;)
Wähle die Checkbox mal aus und dann wieder ab und du wirst sehen, dass dein NotifyIcon nicht mehr kommt.

Ändere deine checkBox1_CheckedChanged Methode:
ausblenden C#-Quelltext
1:
2:
3:
4:
 private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            notifyIcon3.Visible = !checkBox1.Checked;
        }

Dann sollte es wirklich gehen.

Diese Codezeile bedeutet: wenn checkBox1 ausgewählt ist (checkBox1.Checked), dann setzt notifyIcon3.Visible auf false (das ! invertiert den Wert, also aus true wird false und andersrum). Wird die Checkbox wieder abgewählt, wird notifyIcon3.Visible wieder auf true gesetzt.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler

Für diesen Beitrag haben gedankt: mrrioes
mrrioes Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 07.09.14 20:57 
woops, stimmt. Eine Frage noch, zum Abschluss sozusagen.
Was drückt das this. aus? Ich weiß, was das bedeutet, aber wofür steht das im Programm?
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: So 07.09.14 21:32 
Das this ist ein Verweis auf das aktuelle Objekt. In den meisten Fällen braucht man es nicht.
Sagen wir du hast deine Form:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
class MeineForm : Form
{
  int Wert;

  public MeineForm()
  {
    this.Wert = 5;
    // oder
    Wert = 5;
  }
}

Das this ist hier das Gleiche wie MeineForm.

Brauchen tust du es z.B. wenn Klassenvariablen und Methodenvariablen den gleichen Namen haben, also:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
class MeineForm : Form
{
  int Wert;  // das hier ist this.Wert

  public MeineForm(int Wert)  // und das hier ist nur Wert
  {
    this.Wert = Wert;
  }
}


Oder du hast eine Funktion die das Objekt als Parameter fordert, z.B.:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
class MeineForm : Form
{
  void Button_Click(object sender, EventArgs e)
  {
    EineAndereKlasse.ÄndereForm(this); // hier übergibst du MeinForm als Parameter an ÄndereForm.
  }
}

class EineAndereKlasse
{
  public static void ÄndereForm(Form eineForm)
  {
  }
}

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler

Für diesen Beitrag haben gedankt: mrrioes