ListView 和右键菜单例如以下图:

要实现功能是:

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

2、而且仅仅实用户状态为【非活动】时,【删除学员用户】才是可用状态。

功能非常easy,解决的方法例如以下:

【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设置成了选定正行的而不是一个单元格。

事实上主要就是有时候不知道要用什么时间来触发,想通了事实上也非常easy。)

好了。依据用户状态推断删除学员用户这个就简单了。

//假设没选中或者选中了列名菜单。取消右键菜单的弹出
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不能省。后果如之前所说一样)。

最后效果例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTUxMjY5Njk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

刚開始学习的人请多多不吝赐教。

END.

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

  1. SWT的CheckBoxTreeView的上级菜单与下级菜单的选中的实现

    是不是很神奇? treeViewer.addCheckStateListener(new ICheckStateListener() { @Override public void checkStat ...

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

    {================================================================= 功 能: 创建 桌面.发送到....快速启动栏.开始菜单.程序菜单 ...

  3. java查询几个菜单下的所有下级菜单

    需求: 假如有几个一级菜单,一级菜单下面有几个二级菜单,二级菜单下又还有三级菜单.现在要求一级菜单里面的几个设置为无效,将不显示在前端.现在需要的是查询出一级菜单下面所有的菜单,包括二级,三级菜单 原 ...

  4. Android ListView 长按列表弹出菜单

    Android ListView 长按列表弹出菜单 设置长按菜单 listView.setOnCreateContextMenuListener(new View.OnCreateContextMen ...

  5. 安卓开发笔记——Menu菜单组件(选项菜单,上下文菜单,子菜单)

    菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 菜单的实现 ...

  6. 菜单工具栏wxPython菜单与工具栏基础示例

    这两天一直在学习菜单工具栏之类的问题,上午正好有机会和大家讨论一下. 1.基本的api介绍 Package wx :: Class Menu Type Menu Method Summary Menu ...

  7. VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)

    上一节讲了标签控件Tab Control以后,常用控件的内容就全部讲完了,当然并没有包括所有控件,主要是一些很常用很重要的控件.本节开始鸡啄米将为大家讲解菜单的概念及使用. 菜单简介 菜单在界面设计中 ...

  8. VS2010-MFC(菜单:VS2010菜单资源详解)

    转自:http://www.jizhuomi.com/software/210.html 上一节讲了标签控件Tab Control以后,常用控件的内容就全部讲完了,当然并没有包括所有控件,主要是一些很 ...

  9. ASP.NET MVC动态生成网站菜单及子菜单

    在开发ASP.NET MVC网站时,Insus.NET想实现动态产生网站的主菜单及子菜单. 你需要在网站管理后台管理此2张表(Menu,SubMenu)的信息,添加,删除,编辑,更新等. Sequen ...

随机推荐

  1. HDU——1062Text Reverse(水题string::find系列+reverse)

    Text Reverse Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  2. restful的nginx配置方法

    location /{ root /webserver/www/a.tk.com; index index.html index.htm index.php; if ( $document_uri ~ ...

  3. java面试题之为什么hashmap的数组初始化大小都是2的N次方?

    当数组长度为2的N次方时,不同的key算出的index相同的几率小,数据在数组上分配均匀,hash碰撞的几率小,提升查询效率,从大O(N)提升至O(1):

  4. jenkins配置发送邮件

    1.打开系统管理->系统设置,找到邮件设置,如下: 2.SMTP或者其他方式的发送邮件,可自行配置,一下列出了qq邮箱和163邮箱设置的地方,如下图: qq邮箱: 往下拉,找到如下图: 163邮 ...

  5. 介绍一款移动端滚动加载的插件---dropload

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. LeetCode OJ——Minimum Depth of Binary Tree

    http://oj.leetcode.com/problems/minimum-depth-of-binary-tree/ 贡献了一次runtime error,因为如果输入为{}即空的时候,出现了c ...

  7. Arduino可穿戴教程ArduinoIDE新建编辑源文件

    Arduino可穿戴教程ArduinoIDE新建编辑源文件 Arduino IDE新建源文件 Arduino IDE启动后默认就新建了一个源文件,如图2.20所示.新建的源文件名称是以sketch_开 ...

  8. bzoj 3328 : PYXFIB

    Discription Input 第一行一个正整数,表示数据组数据 ,接下来T行每行三个正整数N,K,P Output T行,每行输出一个整数,表示结果 Sample Input 1 1 2 3 S ...

  9. 2017 [六省联考] T6 寿司餐厅

    4873: [Shoi2017]寿司餐厅 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 450  Solved: 316[Submit][Status ...

  10. springboot使用Mybatis(xml和注解)全解析

    ​  刚毕业的第一份工作是 java 开发,项目中需要用到 mybatis,特此记录学习过程,这只是一个简单 demo,mybatis 用法很多不可能全部写出来,有更复杂的需求建议查看 mybatis ...