首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >WinForms ContextMenu在单击MenuItem时保持打开状态

WinForms ContextMenu在单击MenuItem时保持打开状态
EN

Stack Overflow用户
提问于 2017-03-17 15:29:47
回答 2查看 1.6K关注 0票数 0

所以我有一个表单DataGridView,当我右键单击网格时,我想要显示一个上下文菜单,其中有一个菜单项。菜单项将打开第二个表单,该表单将为DataGridView提供一些配置选项。

现在,所有这些都工作得很好,上下文菜单正确显示,第二个表单正确打开,该表单上的所有功能都正常工作。

唯一的问题是,只有当我单击菜单项以外的任何位置时,上下文菜单才会关闭。无论我在菜单项上单击多少次,上下文菜单都不会关闭。

我试着寻找解决办法,但就我所知,没有办法以编程方式关闭上下文菜单。

任何帮助都将不胜感激。下面是用于打开上下文菜单和菜单项单击事件的单击事件的副本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void DataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        DataGridView dgv = (DataGridView)sender;
        if (dgv.CurrentCell == null)
        {
            return;
        }
        else
        {
            Rectangle r = dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false);
            Point p = new Point(r.X + e.X, r.Y + e.Y);
            ContextMenu cm = new ContextMenu();
            cm.MenuItems.Add(new MenuItem("Item", Item_Click));
            cm.Show(dgv, p);
        }
    }
}

private void Item_Click(object sender, EventArgs e)
{
    new SecondForm().Show();
}

更新:通过将ContextMenu类替换为ContextMenuStrip类、删除MouseClick事件处理程序并将ContextMenuStrip对象分配给DataGridView.ContextMenuStrip,我解决了这个问题。看起来好像ContextMenuStrip类负责在右键单击相关控件时显示菜单,所以如果添加一个click事件处理程序来打开菜单,它将反复尝试呈现菜单,使其在最终呈现之前闪烁几次

EN

回答 2

Stack Overflow用户

发布于 2017-03-17 15:37:22

在您的类中添加一个私有变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private bool CloseMenu = true;

在上下文菜单中按下鼠标

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void Item_Click(object sender, EventArgs e)
{
    CloseMenu = false;
    new SecondForm().Show();
}

添加上下文菜单关闭事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void contextMenuStripMy_Closing(object sender, ToolStripDropDownClosingEventArgs e)
{
    e.Cancel = !CloseMenu;
    CloseMenu = true;
}
票数 0
EN

Stack Overflow用户

发布于 2020-03-06 01:25:14

经过多次试验,我在这个问题上找到了一些解决方法。

首先,这是关于ContextMenu而不是ContextMenuStrip。

这不是完美的解决方案,但如果您没有其他替代解决方案,它工作得很好。

下面是如何实现的。

只需在上下文菜单下为所有MenuItems设置Visiable = false即可。

唯一的问题是它会在鼠标周围显示小方块。

我想这个小方块就是空的上下文菜单框。

但是,如果用户在任意位置单击,并且上下文菜单失去焦点,则此小方块将被快速删除。

它真的很小,一点也不麻烦。

在代码中,如果您只有一个菜单项,则如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                 if (cm != null)
                {
                    if (cm.MenuItems.Count > 0) cm.MenuItems[0].Visible = false;
                }

如果您有多个菜单项,那么只需遍历所有菜单项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                 if (cm != null)
                {
                    for(int i = 0; i < cm.MenuItems.Count ; i++)
                     cm.MenuItems[i].Visible = false;
                }

希望这能有所帮助。

对我的案子很管用。

所以我不需要从ContextMenu切换到ContextMenuStrip。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42861477

复制
相关文章
eclipse没有server项,解决办法「建议收藏」
打开eclipse – 窗口 – 首选项 – 服务器 – 运行时环境 找到Tomcat然后添加。
全栈程序员站长
2022/07/25
1K0
eclipse首选项里面没有Server(eclipse的server视图)
①在软件eclipse下的Help->InstallNew Software->中,在Work with中点击Add,如下,加入Name——”Kepler” repository;Location——http://download.eclipse.org/releases/kepler
全栈程序员站长
2022/08/01
1.4K0
eclipse首选项里面没有Server(eclipse的server视图)
针对简书的崩溃给出自己的建议
简书确实几乎每个月都会崩溃,一次崩很长时间....作为一个研发人员,为了更好的使用这个平台,对于我目前发现的问题,我给出自己的一点点建议
名字是乱打的
2022/03/04
4570
eclipse 导入maven工程 在libraries 没有maven Dependencies「建议收藏」
导入maven工程的时候所有的依赖包下载不下来,最后而且在工程的buildPath====>java BuildPath====>libraries 中没有maven Dependencies,显示为 org.eclipse.ide.MAVEN2_CLASSPATH_CONTAINER
全栈程序员站长
2022/09/04
1.7K0
Numpy中的通用函数
NumPy数组的计算:通用函数缓慢的循环通用函数介绍探索Numpy的通用函数高级通用函数的特性聚合:最小值、 最大值和其他值数组值求和最大值和最小值其他聚合函数
用户3577892
2020/06/12
1.9K0
【Java框架型项目从入门到装逼】第二节 - Spring框架 AOP的丧心病狂解说,你喜欢露娜的月下无限连吗?据说露娜要重做,玩个屁,劳资退游吃鸡去了,谢谢。
继续上一节的内容,多几个jar包: image.png aop技术是面向切面编程思想,作为OOP的延续思想添加到企业开发中,用于弥补OOP开发过程中的缺陷而提出的编程思想。AOP底层也是面向对象;只不
剽悍一小兔
2018/05/17
8410
eclipse里没有server选项怎么办(eclipse中没有server选项)
用eclipese写网页很多时候需要配置tomcat,但有些朋友跟着网上的教程配置发现eclipse->【Window】->【Preferences】里没有【server】从而配置不了Runtime Environment。所以需要通过eclipse进行安装。 下面给出解决办法 首先,获取你的eclipse的版本类型,点击【help】->【about eclipse IDE】
全栈程序员站长
2022/08/01
1.3K0
eclipse里没有server选项怎么办(eclipse中没有server选项)
eclipse设置中没有server选项[通俗易懂]
用eclipse准备配置tomcat,发现配置中没有server选项,参考各种解决方法之后成功解决。
全栈程序员站长
2022/08/01
6.4K1
eclipse设置中没有server选项[通俗易懂]
Eclipse项目红色叹号且没有错误的包
直接右击项目–>build path–>Configure build path找到Libraries这一项 对于一般的问题,看看哪个jar包报错删了clean一下就好了。
程裕强
2022/05/06
1.2K1
Eclipse项目红色叹号且没有错误的包
MRP没有跑出建议的几种案例
有时我们运行MRP,但系统并没有跑出采购申请或者计划订单(后文统称建议),并且当前也没有库存或其他供应能满足需求,到底是什么原因导致的呢?本篇将给大家分析几个常见的原因。
老铁一起学
2021/02/22
4.9K0
MRP没有跑出建议的几种案例
python numpy--矩阵的通用函数
通用函数(ufunc)是一种对ndarray中的数据执行元素级运算的函数。你可以将其看作简单函数(接受一个或多个标量值,并产生一个或多个标量值)的矢量化包装器通用函数的输入是一组标量,输出也是一组标量,它们通常可以对应于基本数学运算,如加、减、乘、除等。
用户7886150
2021/01/08
1.2K0
eclipse没有server选项怎么解决
eclipse是一个开放源代码的、基于java的可扩展开发平台。它使用频率十分高,然而当使用它部署项目时候,经常会发现一个重要的问题就是打开eclipse之后没有了server选项,那么该怎么解决这个问题呢?
全栈程序员站长
2022/07/23
2.5K0
eclipse没有server选项怎么解决
通用系统函数
熟练掌握Win32 API函数的参数传递,是软件逆向的基础,本章节内容将使用MASM汇编器,逐个编译这些源程序,你可以通过使用一些调试工具,这里推荐OllyDBG来附加编译后的可执行文件,进行逐个分析,观察二进制程序逆向后的一些变化,总结吸收经验,为以后的二进制逆向,漏洞挖掘打基础.
微软技术分享
2022/12/28
1.1K0
oracle 常见函数_oracle有没有包含的函数
2. 聚合函数(多行函数、分组函数、组函数):操作多行数据,并返回一个结果。比如 SUM
全栈程序员站长
2022/11/01
2.9K0
Eclipse中SVN插件的基本使用「建议收藏」
提交代码的时候,点击整个项目,右键—team—与资源库同步,这个目的是检查本地的代码和服务器上的代码有没有冲突,如果有冲突的话,应该像将冲突解决,否则提交代码会出错,解决冲突看我的另一篇博客。
全栈程序员站长
2022/11/09
5640
Eclipse中SVN插件的基本使用「建议收藏」
Eclipse的代码自动补全功能「建议收藏」
众所周知Eclipse是一款非常智能的IDE工具,那么我们如何设置才能让它更为智能呢?本文主要介绍以下两点内容。
全栈程序员站长
2022/09/02
2.8K0
Eclipse的代码自动补全功能「建议收藏」
eclipse导入maven工程报错的解决「建议收藏」
从svn检出的代码出现报错,花了不少时间解决,自己摸索的话得花不少时间!在这里总结一下遇到的导入maven工程后报错的解决方法 。
全栈程序员站长
2022/09/04
1.8K0
eclipse导入maven工程报错的解决「建议收藏」
2020最新eclipse安装教程,配有每一步的安装过程和细节!「建议收藏」
已经下过好几次了,现在还是忘了。就把过程直接放上面了。下次再换电脑就直接可以看。。。
全栈程序员站长
2022/06/29
8460
2020最新eclipse安装教程,配有每一步的安装过程和细节!「建议收藏」
eclipse导入maven工程出现的问题「建议收藏」
最近自己找了一个ssm框架想学习一下,但是用eclipse导入maven工程后出现了以下问题: error1:Description Resource Path Location Type Project configuration is not up-to-date with pom.xml. Run Maven4MyEclipse->Update Project or use Quick Fix. error2:java compiler level does not match the version of the installed java project facet
全栈程序员站长
2022/09/02
3660
点击加载更多

相似问题

Eclipse露娜中PDT的失效安装

10

无法在eclipse中安装PDT露娜

24

在Eclipse露娜上安装PHP插件PDT

24

Eclipse露娜版本4.4.2没有显示对java 8的建议

11

没有内置插件的Eclipse露娜

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文