ContextMenu与ContextMenuStrip的位置

时间:2014-06-04 00:45:58

标签: c# .net position contextmenu contextmenustrip

我正在尝试将第一个ContextMenuStrip添加到应用程序中,作为菜单。但是,只有ContextMenu出现在应用程序窗口的范围内,ContextMenuStrips才会出现在应用程序窗口之外。

我开始维护的这个应用程序是一种类似于Windows任务栏的工作站或工具栏;它消耗了屏幕边缘,其他窗口无法显示或最大化。此应用程序当前在屏幕顶部运行,ContextMenuStrips水平显示在正确的坐标上,但垂直方向错误地显示在应用程序窗口的底部。

(我是维护这个应用程序的新手,所以我不确定它是如何控制其他窗口无法以与任务栏相同的方式显示或最大化的方式。)

使用图片进行编辑以便澄清; 紫色线是显示器的边界,浅蓝色框是应用程序的界限,其行为类似于Windows任务栏,深蓝色框是我们要单击以使菜单显示的按钮的边界,绿色框是该按钮的ContextMenu的边界(正如预期的那样),问题是橙色框是ContextMenuStrip的边界(它出现在它应该的位置下面)。我希望橙色框出现在与绿色框相同的位置。

enter image description here

1 个答案:

答案 0 :(得分:0)

如何创建ContextMenuStrip以及如何显示?

此示例使用动态创建的ContextMenuStrip,它适用于我:

ContextMenuStrip cms = new ContextMenuStrip();

private void button4_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Right)
    {
        cms.Items.Add("Test Menu");
        cms.Show(button4.PointToScreen(e.Location));
    }
}

然而,动态创作应该是无关紧要的。

但也许您提到的对接是干扰?它是如何实现的?