C# winform ListView 的右键菜单的下级菜单的选项视情况禁用方法

ListView 和右键菜单如下图:

要实现功能是:

1、用户状态为【活动】时,修改用户状态为【活动】禁用,反之则反。

2、并且只有用户状态为【非活动】时,【删除学员用户】才是可用状态。

功能很简单,解决办法如下:

【Answers】

//根据该行数据‘状态’来决定显示右键菜单的哪个项
        private void tsmiUpdate_DropDownOpening(object sender, EventArgs e)
        {
            if (lvStudent.SelectedItems[0].SubItems[3].Text == "活动")
            { tsmiInActive.Enabled = true; tsmiActive.Enabled = false; }
            else { tsmiInActive.Enabled = false; tsmiActive.Enabled = true; }
        }

选择与ListView绑定的右键菜单,再选定要弹出下级菜单的【修改用户状态为】找到其DropDownOpening(顾名思义:在DropDown正在打开时发生)事件,

然后通过判断ListView中当前选定行的第四项的值来决定是否禁用其下级弹出菜单。

注意:必须要对两个项的可用性都确定,否则会出现转换成非活动后再去转换时两个都已经被禁用的情况。

(我这个ListView设置成了选定正行的而不是一个单元格。其实主要就是有时候不知道要用什么时间来触发,想通了其实也很简单。)

好了,根据用户状态判断删除学员用户这个就简单了。

//如果没选中或者选中了列名菜单,取消右键菜单的弹出
        private void cmsRightMenu_Opening(object sender, CancelEventArgs e)
        {
            //判断是否选定项,否则不弹出右键菜单
            if(lvStudent.SelectedItems.Count>0)
            {
                //根据用户状态来禁用删除学员用户
                if(lvStudent.SelectedItems[0].SubItems[3].Text == "活动")
                { tsmiDelete.Enabled = false; }
                else { tsmiDelete.Enabled = true; }
            }
            else
            { e.Cancel = true; }
        }

选择右键菜单的Opening事件,先判断是否选定某一项,否则不弹出右键菜单,再根据用户状态禁用删除选项,否则不禁用(else不能省,后果如之前所说一样)。

最后效果如下图:

今天的小经验分享到此结束。

初学者请多多指教。

END.

时间: 2024-08-07 15:41:24

C# winform ListView 的右键菜单的下级菜单的选项视情况禁用方法的相关文章

成功解决在Python文件上右键菜单无“Edit with IDLE”选项

我电脑是Win7旗舰版,之前电脑上安装的是Python2.6版本的,前两天为了体验一下Microsoft Excel与Python之间互操作, 下载并安装了DataNitro,在安装的时候脑残的安装了Python2.7.5,但是这两天在用的时候,发现之前安装的一些包后不能用了: print sys.path 才知道,Python的搜索路径变成了Python2.7.5的路径了,傻眼了,怎么办? 于是,一通百度,google之后,折腾了一个上午,终于搞定了: 首先,我在cmd里面是可以正常使用Pyt

Windows7桌面多余的右键菜单、新建菜单和发送到里面的选项清理方法

我们可能会装很多软件,这时候右键菜单可能会变得很长,特别是"发送到(Send to)"里面的选项,下面与对大家分享下如何清理右键菜单"发送到"里面的选项,感兴趣的朋友可以参考下哈删除多余的发送到选项 Win7使用一段时间后,我们可能会装很多软件,这时候右键菜单可能会变得很长,特别是"发送到(Send to)"里面的选项,有时候我们卸载软件之后在右键发送到菜单里还会有残存的选项,如果我们想清理一下Win7系统右键菜单"发送到"里

2014年8月24日 菜单 工具条 右键菜单(上下文菜单)

今天说说菜单 工具条 右键菜单吧,总的来说这些东西其实就是同一个东西.以前我们在做插件的时候遇到右键菜单啊,菜单什么的都会习惯性地去用actionSets这个拓展点.不过现在官方却把这个扩展点已经被deprecated弃用了..官方的说明: Do not use this extension point, it will be removed in future versions of this product. Instead, use the extension point org.ecli

[WPF]DataGrid C#添加右键弹出选择菜单

private void dataGrid_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { ContextMenu context = new ContextMenu(); MenuItem item = new MenuItem(); item.Header = "点击删除该行数据"; item.Click += new RoutedEventHandler(item_Click); context.Item

右键弹出自定义菜单,很有意思呀!

<HTML><HEAD><TITLE>右键菜单</TITLE> <SCRIPT language="javascript"> <!-- function showmenuie5(){ var rightedge=document.body.clientWidth-event.clientX var bottomedge=document.body.clientHeight-event.clientY if (righte

Delphi -- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜 单

{================================================================= 功 能: 创建 桌面.发送到....快速启动栏.开始菜单.程序菜单.右键菜单 快捷方式 参 数: FileName : 快捷方式执行文件名 Description : 快捷方式描述信息 Arguements : 快捷方式执行参数 ShowName : 快捷方式显示名称 Location : 快捷方式类别 id : 需设置状态的队列号(255 为设置) Create

TortoiseSVN升级后右键菜单没有TortoiseSVN的相关选项 解决方案

TortoiseSVN升级后右键菜单没有TortoiseSVN的相关选项 解决方案,布布扣,bubuko.com

Win10如何在右键菜单中添加“显示/隐藏文件”选项?

随着Win10系统的发布,一些用户已经升级到Win10系统,我们在使用Win10系统时经常会找不到所需的文件,也不知道怎么回事,估计是被隐藏起来了.遇到这样的问题要如何解决?那Win10如何在右键菜单中添加“显示/隐藏文件”选项呢?现在小编就和大家说一下Win10在右键菜单中添加“显示/隐藏文件”选项的方法. 具体步骤如下: 1.打开“此电脑”,点击工具栏中的[查看]按钮: 2.在右侧通过勾选或去掉[皇冠hg0088]即可打开或关闭 显示隐藏文件了. Win10在右键菜单中添加“显示/隐藏文件”

Android ListView 长按列表弹出菜单

Android ListView 长按列表弹出菜单 设置长按菜单 listView.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() { @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.add(0, 0, 0, "删除单号"); menu.add