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]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

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!