Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > ContextMenu и его событие


Автор: DenWPF 16.4.2011, 23:31
В коде вызываю своё контекстное меню.
Код

var contextMenu = new InterfaceContextMenu();
contextMenu.Show(this,x, y);
if(true)// [color=red]Позиция 2[/color]
{
    //...
}

Код самого контекстного меню.
Код

public partial class InterfaceContextMenu : ContextMenu
    {
        public InterfaceContextMenu(List<string> parent)
        {
            MenuItem menuItem;
            for (int i = 0; i < parent.Count;i++ )
            {
                menuItem = new MenuItem(parent[i].ToString());
                menuItem.Click+=new EventHandler(menuItem_Click);
                this.MenuItems.Add(menuItem);
            }

            InitializeComponent();
        }

        void menuItem_Click(object sender, EventArgs e)//[color=red]Позиция 1[/color]
        {
             throw new NotImplementedException();
        }


        
    }


При клике позиция 2 срабатывает раньше чем 1, хотя мне нужно наоборот.

Из контекстного меню ещё нужно будет забрать информацию на что кликнул пользователь.

Как сделать что бы при выборе элемента в контекстном меню, в начале срабатывало события клика, а уж потом закрытие.

Автор: Экскалупатор 16.4.2011, 23:50
Цитата(DenWPF @  16.4.2011,  22:31 Найти цитируемый пост)
При клике позиция 2 срабатывает раньше чем 1, хотя мне нужно наоборот.

не совсем понял что за позиции? контекстное меню сначала генерирует событие клика вообще по себе(по любой строке), но если указано событие Click для конкретной позиции меню то потом генерит для него. по крайней мере у меня так работает.

Добавлено через 1 минуту и 45 секунд
так что у тебя вроде все правильно работает(на сколько я понял что ты имеешь ввиду). я думаю проще тебе будет не обрабатывать события клика по меню вообще, а обрабатывать только событие клика по конкретному пункту.

Автор: DenWPF 16.4.2011, 23:54
Запускается контекстное меню, я в нем нажимаю на любой его елемент, сразу контекстное меню сворчивается и идет дальше по коду  т.е в Позицию 2 (там где  if(true))

а потом уже срабатывает обработчик события.

Автор: Экскалупатор 17.4.2011, 00:00
тут дело не в том что оно переходит, оно просто не прерывается выполнение кода, потому что контекстное меню это не форма и ей управление не передается, просто на форме отображается еще один контрол, по этому после окончания выполнения метода Show(), продолжает выполняться то что после него и только потом Click. а зачем тебе просто показывать меню? сделай его включение по правому клику мышки(как во всех прогах) и ничего там больше не указывай и будет все ок.

Автор: DenWPF 17.4.2011, 00:03
Тут другая задача. 
Но я понял, значит буду прописывать, то что мне нужно в событии, и не буду не чего ждать из контекстного меню.
Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)