码迷,mamicode.com
首页 > Windows程序 > 详细

C# winform ListView 的右键菜单的下级菜单的选项视情况禁用方法

时间:2014-10-13 20:15:27      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:c#   listview   右键菜单   初学经验分享   

ListView 和右键菜单如下图:

bubuko.com,布布扣

要实现功能是:

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绑定的右键菜单,再选定要弹出下级菜单的【修改用户状态为】找到其DropDownOpening(顾名思义:在DropDown正在打开时发生)事件,

然后通过判断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不能省,后果如之前所说一样)。

最后效果如下图:

bubuko.com,布布扣


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

初学者请多多指教。

END.



C# winform ListView 的右键菜单的下级菜单的选项视情况禁用方法

标签:c#   listview   右键菜单   初学经验分享   

原文地址:http://blog.csdn.net/qq_15126969/article/details/40048327

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!