zoukankan      html  css  js  c++  java
  • 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不能省。后果如之前所说一样)。

    最后效果例如以下图:



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

    刚開始学习的人请多多不吝赐教。

    END.



  • 相关阅读:
    Java入门:基础算法之从字符串中找到重复的字符
    Java入门:基础算法之产生随机数
    Java入门:基础算法之线性搜索
    Java入门:基础算法之检查奇偶性
    安装hadoop1.2.1集群环境
    Linux上安装JDK
    改变HTML中超链接的显示样式
    【Nutch2.2.1源代码分析之5】索引的基本流程
    【Nutch2.2.1源代码分析之4】Nutch加载配置文件的方法
    java生成UUID通用唯一识别码 (Universally Unique Identifier)
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6848733.html
Copyright © 2011-2022 走看看