• 实现不能粘贴和复制的密码框


    因项目中要求密码框不能复制或粘贴内容,也不允许右键菜单,故做此文。

    密码框继承于TextBox。

    不能复制,粘贴和右键菜单的需求利用Textbox现有的属性无法实现或完全实现,即使ToolStripMenu为空,系统也会自己给添加一个具备 复制粘贴的右键菜单。

    针对复制,粘贴和剪切,需要对在消息循环中进行拦截,然后将其处理事件置空。代码如下所示:

     1       protected  override void WndProc(ref Message m)
     2        {
     3            //阻止粘贴,复制,剪切
     4           if (m.Msg!=WinApi.WM_PASTE &&
     5               m.Msg!=WinApi.WM_COPY && 
     6               m.Msg!=WinApi.WM_CUT) 
     7           {
     8               base.WndProc(ref m);
     9           }
    10        }

    针对右键菜单,可以拦截消息循环,也可以将其默认菜单设置为没有菜单项的菜单,我采用了第二种方法:

      ContextMenuStrip defaultMenu;
    
     1    public override ContextMenuStrip ContextMenuStrip
     2       {
     3           get
     4           {
     5               if (base.ContextMenuStrip == null)
     6               {
     7                   base.ContextMenuStrip = this.defaultMenu;
     8               }
     9               return base.ContextMenuStrip;
    10           }
    11           set
    12           {
    13               if (base.ContextMenuStrip == null)
    14               {
    15                   base.ContextMenuStrip = this.defaultMenu;
    16               }
    17           }
    18       }


    在该TextBox的构造函数或Load事件中,将defaultMenu赋值给ContextMenuStrip即可。

    文中若有漏洞或有更好的方法,请喷完后再多多指教;

    邮箱:pengcwl@163.com

  • 相关阅读:
    ubuntu16.04自动删除内核
    禅道服务数据的迁移
    k8s常用命令3
    使用logstash迁移es集群数据
    es集群迁移脚本
    helm常用命令1
    【操作】python2升级到python3
    【推荐】构建脚本之shell编写规范
    【推荐】linux使用zip命令
    Sublime使用大全
  • 原文地址:https://www.cnblogs.com/pengcwl/p/3407158.html
Copyright © 2020-2023  润新知