C# winform自定义控件

在winform开发中,有时候需要对原有控件进行修改,本文就textbox控件为例,增加不能复制、粘贴、剪切textbox文本框内的内容。详细介绍如何实现。

创建自定义控件

增加属性方法

csharp 复制代码
//注意继承父类对象,System.Windows.Forms.TextBox
 public partial class NoCopyPasteTextBox : System.Windows.Forms.TextBox
 { // 系统消息常量:剪贴板操作相关
     private const int WM_COPY = 0x0301;    // 复制
     private const int WM_CUT = 0x0300;     // 剪切
     private const int WM_PASTE = 0x0302;   // 粘贴

     protected override void WndProc(ref Message m)
     {
         // 拦截复制、剪切、粘贴的系统消息
         if (m.Msg == WM_COPY || m.Msg == WM_CUT || m.Msg == WM_PASTE)
         {
             return; // 忽略消息,不执行默认操作
         }

         // 其他消息正常处理
         base.WndProc(ref m);
     }

     protected override void OnKeyDown(KeyEventArgs e)
     {
         // 拦截快捷键(双重保险)
         if ((e.Control && e.KeyCode == Keys.C) ||
             (e.Control && e.KeyCode == Keys.V) ||
             (e.Control && e.KeyCode == Keys.X))
         {
             e.Handled = true;
             e.SuppressKeyPress = true;
             return;
         }

         base.OnKeyDown(e);
     }

     public NoCopyPasteTextBox()
     {
         // 禁用右键菜单
         this.ContextMenu = new ContextMenu();
     }
 }

调用控件

重新编译后,在控件栏就可以看到自定义的控件,然后执行拖拉

相关推荐
mldong1 小时前
C# 开发者也有自己的轻量工作流引擎了:NuGet 装包,5 分钟跑通一条审批流
后端·c#·.net
kruptos2 小时前
分布式系统怎么“选主“?Raft 共识一次讲清
开发语言·分布式·php·共识算法
吴声子夜歌3 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
benchmark_cc4 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库4 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H4 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
泡海椒4 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP4 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
samble5 小时前
从零搭建工业控制系统(二十二):线程安全与并发控制
c#·wpf·并发·mvvm·线程安全·工业控制
江畔柳前堤5 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native