C# winform ListView 的右键菜单的下级菜单的选项视情况禁用方法
2017-05-13 13:24
267 查看
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中当前选定行的第四项的值来决定是否禁用其下级弹出菜单。
注意:必需要对两个项的可用性都确定,否则会出现转换成非活动后再去转换时两个都已经被禁用的情况。
(我这个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不能省。后果如之前所说一样)。
最后效果例如以下图:
今天的小经验分享到此结束。
刚開始学习的人请多多不吝赐教。
END.
相关文章推荐
- C# winform ListView 的右键菜单的下级菜单的选项视情况禁用方法
- 删除鼠标右键菜单多余选项的方法
- windows8下恶意软件导致右键菜单中没有个性化选项的解决方法
- Win7迅雷影音播放器右键菜单的字幕选项是灰色的解决方法
- VS2012开启右键菜单创建单元测试选项(Create Unit Tests) 的方法
- Win7删除桌面右键菜单amd vision engine 选项的方法
- 转载:VS2012开启右键菜单创建单元测试选项(Create Unit Tests) 的方法
- windows7删除鼠标右键菜单多余选项的方法
- 在Windows 8/8.1的右键菜单中添加发送到OneDrive选项的方法
- 网页禁用右键菜单和鼠标拖动选择方法小结
- 右键菜单“新建文本”选项消失的恢复方法
- 网页禁用右键菜单和鼠标拖动选择方法小结
- Win10鼠标右键菜单发送到添加子菜单选项的方法
- Windows7桌面多余的右键菜单、新建菜单和发送到里面的选项清理方法
- 装了office2007,右键菜单没有新建Word、Excel选项解决方法
- 在右键点击的菜单中添加选项的方法
- win7系统右键菜单没有小工具选项的解决方法
- 鼠标右键菜单添加vim选项
- Ulipad右键菜单不能打开包含空格的目录下的文件的解决方法
- IE右键菜单没有出现“在新选项卡中打开”的解决方法