Problem: Treeview + MouseDown + ContextMenu

0

Witam.

W swojej aplikacji korzystam z formy TreeView. Jej galezie wygladaja nastepujaco:

Swiat
Azja1
Azja2
Europa1
Anglia
Polska
Warszawa
Wroclaw
Europa2

Chce, aby po kliknieciu galezi Azja prawym przyciskiem myszy wyswietlilo sie ContextMenu, a po kliknieciu galezi Europa prawym przyciskiem myszy wyswietlil sie MessageBox.

Czesc kodu mojego programu:

    private void treeView_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            TreeNode nodeSelected = treeView.GetNodeAt(e.X, e.Y);
            if (nodeSelected != null)
            {
                treeView.SelectedNode = nodeSelected;
                if (Regex.IsMatch(nodeSelected.Text, "Azja" + @"\d"))
                {
                    ContextMenu contextMenu = new ContextMenu();
                    contextMenu.MenuItems.Add("Edytuj");
                    contextMenu.MenuItems.Add("Usun");
                    treeView.ContextMenu = contextMenu;
                    treeView.ContextMenu.Show(treeView, new Point(e.X, e.Y));
                }
                else if (Regex.IsMatch(nodeSelected.Text, "Europa" + @"\d"))
                {
                    MessageBox.Show("Nie mozesz edytowac/usunac galezi Europa!!!");
                }
            }
        }
    }

Fakt po pierwszym kliknieciu prawym przyciskiem na galez Azja wyswietla sie ContextMenu. Niestety od tej pory po kliknieciu prawym przyciskiem na dowolna galez ponownie wyswietla sie ContextMenu..

Prosze o pomoc.

Pozdrawiam.

Rafał (bakłażan)

0

private void treeView_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
TreeNode nodeSelected = treeView.GetNodeAt(e.X, e.Y);
if (nodeSelected != null)
{
treeView.SelectedNode = nodeSelected;
if (Regex.IsMatch(nodeSelected.Text, "Azja" + @"\d"))
{
ContextMenu contextMenu = new ContextMenu();
contextMenu.MenuItems.Add("Edytuj");
contextMenu.MenuItems.Add("Usun");
treeView.ContextMenu = contextMenu;
treeView.ContextMenu.Show(treeView, new Point(e.X, e.Y));
treeView.ContextMenu.MenuItems.Clear();
}
else if (Regex.IsMatch(nodeSelected.Text, "Europa" + @"\d"))
{
MessageBox.Show("Nie mozesz edytowac/usunac galezi Europa!!!");
}
}
}
}

Pytanie nieaktualne :-)

Pozdrawiam.

Rafał (bakłażan)

1 użytkowników online, w tym zalogowanych: 0, gości: 1