首页 > 代码库 > C# winform ListView 的右键菜单的下级菜单的选项视情况禁用方法
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中当前选定行的第四项的值来决定是否禁用其下级弹出菜单。
注意:必须要对两个项的可用性都确定,否则会出现转换成非活动后再去转换时两个都已经被禁用的情况。
(我这个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.
C# winform ListView 的右键菜单的下级菜单的选项视情况禁用方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。