Entwickler-Ecke

WinForms - Dynamisches KontextMenü auf einem Tray Symbol erstellen


Delete - So 14.09.08 19:53
Titel: Dynamisches KontextMenü auf einem Tray Symbol erstellen
Hallo Zusammen...

Ich habe folgendes vor:

Ich will ein C# Programm erstellen, was nur im Tray angezeigt wird (Notify Icon).
Das klappt soweit.
Dann will ich ein dynamisches Kontext Menü erstellen. Die Daten kommen aus einem txt-File.
Das klappt soweit auch.

Als Hilfe hab ich folgende Seite genommen: http://www.developer.com/net/csharp/article.php/3336751

Jetzt das eigentlich einfachste, nur weiss ich nicht wie das geht... ^^

Wie rufe ich ab, welcher Button geklickt wurde?
Den Namen des ausgewählten Kontext Menü Punktes will ich einfach nur in eine Variable gespeichert haben.

Google und Co. liefern zwar einige Ergebnisse, jedoch kann ich damit nicht wirklich was anfangen.

Ich bin nicht sonderlich weit in der C#-Programmierung, also bitte für Anfänger erklären.

Vielen Dank im vorraus für eure Mühe.


Christian S. - So 14.09.08 21:54

Hallo und :welcome:!

Jedes MenuItem sollte doch ein Click-Ereignis haben. Wenn Du alle Items dasselbe Ereignis zuweist, kannst Du über den Sender-Parameter abfragen, welches Item das war.

Grüße
Christian


Delete - Di 16.09.08 15:44

Hallo... ^^

Ja da würde ich dir jetzt Recht geben, nur kann ich mit diesen Ereignissen überhaupt nicht umgehen...

Ich Poste mal mein Quellcode... Vielleicht könnte mir ja jemand dieses Klick Ereigniss, dann einmal im Detail posten...


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            
            InitializeComponent();
            Kontext.Items.Clear();
            

            const string filename = "Config.txt";
            string eingelesen = "";
            if (!File.Exists(filename))
            {
                MessageBox.Show("Fehler, die Datei: " + filename + " konnte nicht gefunden werden.");
                TrayIcon.Visible = false;
                System.Windows.Forms.Application.Exit(); // Der Befehl klappt übrigens auch nicht...?! ^^  
            }
            
            TextReader tr = File.OpenText(filename);
            while ((eingelesen = tr.ReadLine()) != null)
            {
                Kontext.Items.Add(eingelesen);
            }
            tr.Close();
        }



Jetzt kann man vielleicht schon herauslesen wie (un)weit ich in C# bin...^^

Moderiert von user profile iconChristian S.: Color- durch C#-Tags ersetzt


Th69 - Mi 17.09.08 09:28

Dann lies noch mal die Grundlagen zu Ereignissen durch, z.B. bei http://www.galileocomputing.de/openbook/visual_csharp/ insbesondere Kapitel 4.5 und 13.4.