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. Luogu【P1725】琪露诺(单调队列,DP)

    本文是笔者第二篇解题报告.从现在开始,会将练的一些题发到博客上并归类到"解题报告"标签中. 琪露诺是这样一道题 这道题可以用纯DP做,但是据说会超时.(为什么?看起来过河这题比它数 ...

  2. wine-qq 安装

    http://www.bubuko.com/infodetail-343048.html

  3. NOJ——1559Jump to the Top of Mountain(简单暴力DFS+渣渣代码)

    [1559] Jump to the Top of Mountain 时间限制: 1000 ms 内存限制: 65535 K 问题描述 Have you played a game named Min ...

  4. LSU——1116 Necklace(尺取)

    1116 Necklace 通过率:5/23 难度系数:0时间限制:1000ms 内存限制:32000KB java 两倍. 介绍 Little King has a beautiful pearl ...

  5. HDU-3729 I'm Telling the Truth

    一个点集是学生,一个点集是排名.然后通过学生的排名范围连线,求此二分图的最大匹配. 本题还要求是最大字典序输出,那么由贪心可得,你让标号从大到小找增广边就行了. #include <cstdli ...

  6. HDU-1529 Cashier Employment

    据网上说这是到差分约束四星题... 可我觉得难吗? 比推DP方程容易... 两种约束方式,当然实现到程序就变成六种了... #include <cstdio> #include <c ...

  7. How to resolve mysql problem when you get code 2003(10061) and 1130

    When I use Navicate to connect to mysql on Ubuntu, I got message 2003(10061) firstly. To resovle thi ...

  8. vue 按需加载

    vue 构建单页面应用,但是问题是随着系统的体积变大,js文件也体积太大了,这时候就需要按需要进行加载了 vue-router提供了懒加载的方式 const Foo = resolve => r ...

  9. bzoj 2792 [Poi2012]Well 二分+dp+two_pointer

    题目大意 给出n个正整数X1,X2,...Xn,可以进行不超过m次操作,每次操作选择一个非零的Xi,并将它减一. 最终要求存在某个k满足Xk=0,并且z=max{|Xi - Xi+1|}最小. 输出最 ...

  10. The Luckiest number(hdu 2462)

    给定一个数,判断是否存在一个全由8组成的数为这个数的倍数 若存在则输出这个数的长度,否则输出0 /* 个人感觉很神的一道题目. 如果有解的话,会有一个p满足:(10^x-1)/9*8=L*p => ...