Feedback

C# - System-Menü des Formulars "manipulieren"/Einträge hinzufügen

Veröffentlicht von am 25.01.2013
(0 Bewertungen)
Mit den Folgenden Methoden aus der Unten stehenden Klasse kann man ziemlich Simpel Einträge in das System-Menü hinzufügen.

Das System-Menü ist das Menü, das sich öffnet, wenn man auf das Icon einer Anwendung klickt.
Bild: https://www.dropbox.com/s/0546l8rm3m9v0nb/SystemMenu.JPG

Demo: https://dl.dropbox.com/s/dp6psg00ot72yqn/SystemMenuTester.exe?dl=1

Als erstes:
int handle = this.Handle.ToInt32();


Seperator hinzufügen:
SystemMenu.AddSeperator(handle);


Eintrag hinzufügen:
SystemMenu.AddItem(hanlde, "Eintrag");


Mehrere Einträge aus StringListe hinzufügen:
List<string> itemsList = new List&lt;string&gt;();
// Einträge auf beliebige Weise hinzufügen
SystemMenu.AddItems(handle, itemsList);


Abfragen ob ein Element geklickt wurde (Der Index wird beginnend bei 0 hochgezählt. Der zweite manuell hinzugefügte Eintrag hat also Index 1.):

int index = 0;
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);

if (m.Msg == 0x112)
{
if (m.WParam.ToInt32() == index)
{
MessageBox.Show("TestItem");
}
}
}

Es können/müssen selbstverständlich weitere Abfragen der Art

if (m.WParam.ToInt32() == index)
{
MessageBox.Show("TestItem");
}

für jeden Index/also jedes Item hinzugefügt werden...
PS: In diesem Fall reicht natürlich ein ELSE if(...):
Niemand kann zwei Sachen gleichzeitig anklicken :)

Feedback wäre nett.. :)
GFU-Schulungen  [Anzeige]

ASP.NET Core Server - Programmierung

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

JavaScript für .NET-Entwickler

Sie sind .NET-Entwickler und nun stehen Sie vor der Aufgabe, JavaScript in Ihre Arbeit einzubinden. Die Schulung vermittelt Ihnen die JavaScript Grundlagen und die Funktionen der Scriptsprache. Sie wissen, wie objektorientierte Programmierung in JavaScript funktioniert und lernen abschließend Best Practicies Fälle kennen.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;

class SystemMenu
{
    [DllImport("user32.dll")]
    private static extern int GetSystemMenu(int hwnd, int bRevert);

    [DllImport("user32.dll")]
    private static extern int AppendMenu(int hMenu, int Flagsw, int IDNewItem, string lpNewItem);


    private static int CountItems = 0;

    public static void AddSeperator(int FormHandleAsInt)
    {
        int menu = GetSystemMenu(FormHandleAsInt, 0);
        AppendMenu(menu, 0xA00, 0, null);
    }

    public static void AddItem(int FormHandleAsInt, string name)
    {
        int menu = GetSystemMenu(FormHandleAsInt, 0);
        AppendMenu(menu, 0, CountItems, name);
        CountItems++;
    }

    public static void AddItems(int FormHandleAsInt, List<String> items)
    {
        int menu = GetSystemMenu(FormHandleAsInt, 0);
        for (int i = 0; i < items.Count; i++)
        {
            AppendMenu(menu, 0, CountItems, items[i]);
            CountItems++;
        }
    }
}
Abgelegt unter System, Menü, Einträgehinzufügen.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!