Контекстное меню не открывается при первом нажатии - PullRequest
1 голос
/ 05 апреля 2011

У меня есть приложение на C #, где я динамически заполняю, а затем запускаю контекстное меню с именем cmTestplan.

    private void cmTestplan_Opening(object sender, CancelEventArgs e)
    {
        if ((cmTestplan.SourceControl is TextBox) && 
        (cmTestplan.SourceControl.Enabled == true) && 
        (cmTestplan.SourceControl.Text != ""))
        {

            RightClickSetup(cmTestplan.SourceControl.Text);
            cmTestplan.Show();
        }

    }

    private void RightClickSetup(string Path)
    {
        this.UseWaitCursor = true;
        cmTestplan.Items.Clear();

        //Test for file or folder
        if (Directory.Exists(Path) == true)
        {
            cmTestplan.Items.Add("Open folder");
            this.UseWaitCursor = false;
        }
        else if (File.Exists(Path) == true)
        {
            cmTestplan.Items.Add("Open folder");
            cmTestplan.Items.Add("Open file");
            this.UseWaitCursor = false;
        }
    }

По какой-то причине (я надеюсь, что один из вас, уважаемые дамы или господа, может это предоставить), меню не отображается при первом щелчке правой кнопкой мыши текстового поля, с которым связан этот cmTestplan. После этого он будет последовательно отображаться одним щелчком правой кнопки мыши.

Я пытался закомментировать все проверки файлов / папок и все еще получаю проблему.

1 Ответ

6 голосов
/ 05 апреля 2011

Ваше меню не открывается, так как аргумент отмены события по умолчанию имеет значение true для пустого меню.

просто добавьте e.Cancel = false; в свой обработчик события открытия;

   RightClickSetup(cmTestplan.SourceControl.Text);
   e.Cancel = false;

.. youможно также пропустить вызов "show".

См. также MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...