Context menu na przykładzie menu myszki

Kontrolka ContextMenuStrip należy do kontrolek z grupy Manu i paski narzędzi. Ogólnie we współczesnych aplikacjach menu kontekstowe stosowane jest do obsługi funkcji związanych bezpośrednio z elementem na ekranie. Takie podejście pozwala uniknąć przeładowania opcjami głównego menu aplikacji.

Przykład użycia menu kontekstowego w systemie Windows jest wybranie ustawień ekranu po kliknięciu prawym przyciskiem myszki w obszarze pulpitu

Cel:

Utwórz aplikację zawierającą menu kontekstowe uruchamiane w obszarze formatki prawym przyciskiem myszki. Niech menu zawiera dwie funkcje: losowa zmiana koloru formularza oraz zamknięcie aplikacji.

ContextmenuStrip w aplikacji okienkowej. Visual Studio C#

Osadź kontrolkę ContextmenuStrip w obszarze formatki. Wybierz kontrolkę i przeciągnij myszką w obszar formatki

ContextmenuStrip. Visual Studio C#

Wprowadź kilka próbnych tekstów elementów menu. Po kliknięciu w ikonę osadzonej kontrolki (na rysunku punkt 1) otworzy się okno dialogowe edycji elementów menu

item ContextmenuStrip. Visual Studio C#

Test widoczności menu kontekstowego

Wywołanie menu kontekstowego zrobimy po kliknięciu prawym przyciskiem myszki w obszarze formularza formatki. Wykorzystamy zdarzenie Click

show ContextmenuStrip. Visual Studio C#

Kod wywołujący menu jest bardzo prosty. Patrz poniżej

Wskazówka:


private void Form1_MouseDown(object sender, MouseEventArgs e)
{
	if (e.Button == MouseButtons.Right)
	{
		contextMenuStrip1.Show();
	}
}

Skompiluj program i sprawdź efekt działania. Zauważysz, że menu pokazuje się w górnym lewym rogu ekranu.

współrzędne ContextmenuStrip. Visual Studio C#

Należy to poprawić. Poprawka może się kojarzyć, że należy przypisać do meny współrzędne kliknięcia myszki. Tak jednak nie jest. Należy przypisać właściciela do utworzonego menu kontekstowego, co robimy jak poniżej

właściciel ContextmenuStrip. Visual Studio C#

Skompiluj program i sprawdź efekt działania. Teraz menu będzie pojawiać się w obszarze aplikacji

widok na ContextmenuStrip. Visual Studio C#

Dodajemy obsługę zdarzeń do menu kontekstowego

Dodamy dwie funkcje w utworzonym menu kontekstowym. Jedna opcja będzie zmieniać losowo kolor tła formatki. Druga opcja będzie zamykać aplikację. Patrz poniższy rysunek

opcje ContextmenuStrip. Visual Studio C#

Wprowadź właściwy tekst opcji menu kontekstowego, na przykład na podstawie poniższej ilustracji

tekst opcji ContextmenuStrip. Visual Studio C#

Przypisz funkcje zdarzeń kliknięcia w poszczególny element menu

funkcje zdarzeń ContextmenuStrip. Visual Studio C#

Ciała funkcji zdarzeń kliknięcia myszką w opcję menu odpowiednio wypełnij poniższym kodem

Wskazówka:


private void element3ToolStripMenuItem_Click(object sender, EventArgs e)
{
	Close();
}

private void element1ToolStripMenuItem_Click(object sender, EventArgs e)
{
	//losowy kolor
	Random los = new Random();
	byte skladowaCzerwona = (byte)los.Next(256);
	byte skladowaZielona = (byte)los.Next(256);
	byte skladowaNiebieska = (byte)los.Next(256);
	this.BackColor=Color.FromArgb(skladowaCzerwona,
								  skladowaZielona,
								  skladowaNiebieska);    
}

Skompiluj program i sprawdź efekt działania.

Pełny kod aplikacji

Wskazówka:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _21b_menuMyszki
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                contextMenuStrip1.Show();
            }
        }

        private void element3ToolStripMenuItem_Click(object sender, 
                                                     EventArgs e)
        {
            Close();
        }

        private void element1ToolStripMenuItem_Click(object sender, 
                                                     EventArgs e)
        {
            //losowy kolor
            Random los = new Random();
            byte skladowaCzerwona = (byte)los.Next(256);
            byte skladowaZielona = (byte)los.Next(256);
            byte skladowaNiebieska = (byte)los.Next(256);
            this.BackColor=Color.FromArgb(skladowaCzerwona,
                                          skladowaZielona,
                                          skladowaNiebieska);    
        }
    }
}
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play