首次单击时不会打开上下文菜单

时间:2011-04-05 13:55:07

标签: c# contextmenu show

我有一个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 个答案:

答案 0 :(得分:5)

您的菜单无法打开,因为对于空菜单,事件参数取消默认为true。

只需在您的Opening事件处理程序中添加e.Cancel = false;;

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

..你也可以跳过“show”电话。

另见MSDN