C# winform ListView 的右键菜单的下级菜单的选项视情况禁用方法
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 的右键菜单的下级菜单的选项视情况禁用方法的更多相关文章
- SWT的CheckBoxTreeView的上级菜单与下级菜单的选中的实现
是不是很神奇? treeViewer.addCheckStateListener(new ICheckStateListener() { @Override public void checkStat ...
- Delphi -- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜 单
{================================================================= 功 能: 创建 桌面.发送到....快速启动栏.开始菜单.程序菜单 ...
- java查询几个菜单下的所有下级菜单
需求: 假如有几个一级菜单,一级菜单下面有几个二级菜单,二级菜单下又还有三级菜单.现在要求一级菜单里面的几个设置为无效,将不显示在前端.现在需要的是查询出一级菜单下面所有的菜单,包括二级,三级菜单 原 ...
- Android ListView 长按列表弹出菜单
Android ListView 长按列表弹出菜单 设置长按菜单 listView.setOnCreateContextMenuListener(new View.OnCreateContextMen ...
- 安卓开发笔记——Menu菜单组件(选项菜单,上下文菜单,子菜单)
菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 菜单的实现 ...
- 菜单工具栏wxPython菜单与工具栏基础示例
这两天一直在学习菜单工具栏之类的问题,上午正好有机会和大家讨论一下. 1.基本的api介绍 Package wx :: Class Menu Type Menu Method Summary Menu ...
- VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
上一节讲了标签控件Tab Control以后,常用控件的内容就全部讲完了,当然并没有包括所有控件,主要是一些很常用很重要的控件.本节开始鸡啄米将为大家讲解菜单的概念及使用. 菜单简介 菜单在界面设计中 ...
- VS2010-MFC(菜单:VS2010菜单资源详解)
转自:http://www.jizhuomi.com/software/210.html 上一节讲了标签控件Tab Control以后,常用控件的内容就全部讲完了,当然并没有包括所有控件,主要是一些很 ...
- ASP.NET MVC动态生成网站菜单及子菜单
在开发ASP.NET MVC网站时,Insus.NET想实现动态产生网站的主菜单及子菜单. 你需要在网站管理后台管理此2张表(Menu,SubMenu)的信息,添加,删除,编辑,更新等. Sequen ...
随机推荐
- SparkStreaming 编程指南
摘要:学习SparkStreaming从官网的编程指南开始,由于Python编码修改方便不用打包,这里只整理python代码! 一.概述 Spark Streaming 是 Spark Core AP ...
- 【Luogu】P3806点分治模板(点分治)
题目链接 wc听不懂lca讲的高等数学专场(一个字都听不懂),然后就自学了点分治. 点分治就是我先处理完跟根有关的东西,然后把根标记掉,把原树拆成若干个联通块,然后分别对每个联通块(每个小树)搞一模一 ...
- BZOJ4517 [Sdoi2016]排列计数 【组合数 + dp】
题目 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条件的 ...
- 用java通过键盘输入若干个int,直到输入#结束
转 import java.util.ArrayList; import java.util.Scanner; public class Test { public static void main( ...
- hdu 3613 KMP算法扩展
Best Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- 标准C程序设计七---104
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- 反汇编角度->C++ const
#include<iostream> #include<stdlib.h> using namespace std; const int &add( const int ...
- 重新实践《轻量级DJANGO》这本书
从手到尾,手写的DJANGO,不借助命令,效果一样的呢. import os import sys import hashlib from django.conf import settings DE ...
- python3 - pop 接收邮件/ smtp 发送邮件
以下通过python3 实现接收和发送邮件,网上相关说明文档很多.请自己查阅,这里只写入代码, # 实例:通过poplib 模块接收指定账号的邮件并进行解码处理,结果可视化. #!/opt/pytho ...
- Codeforces Round #321 (Div. 2) Kefa and First Steps 模拟
原题连接:http://codeforces.com/contest/580/problem/A 题意: 给你一个序列,问你最长不降子串是多长? 题解: 直接模拟就好了 代码: #include< ...