挺可爱的 發表於 2025-12-16 10:26:35

C# winform自定义控件的实现方法

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>创建自定义控件</li><li>增加属性方法</li><li>调用控件</li></ul></div><p>在winform开发中,有时候需要对原有控件进行修改,本文就textbox控件为例,增加不能复制、粘贴、剪切textbox文本框内的内容。详细介绍如何实现。</p>
<p class="maodian"></p><h2>创建自定义控件</h2>
<p style="text-align:center"><img alt="" height="1059" src="https://img.jbzj.com/file_images/article/202512/2025121610264112.jpg" width="1151" /></p>
<p class="maodian"></p><h2>增加属性方法</h2>
<div class="jb51code"><pre class="brush: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 &amp;&amp; e.KeyCode == Keys.C) ||
             (e.Control &amp;&amp; e.KeyCode == Keys.V) ||
             (e.Control &amp;&amp; e.KeyCode == Keys.X))
         {
             e.Handled = true;
             e.SuppressKeyPress = true;
             return;
         }

         base.OnKeyDown(e);
   }

   public NoCopyPasteTextBox()
   {
         // 禁用右键菜单
         this.ContextMenu = new ContextMenu();
   }
}
</pre></div>
<p class="maodian"></p><h2>调用控件</h2>
<p>重新编译后,在控件栏就可以看到自定义的控件,然后执行拖拉</p>
<p style="text-align:center"><img alt="" height="607" src="https://img.jbzj.com/file_images/article/202512/2025121610264136.jpg" width="1107" /></p>
<p>到此这篇关于C# winform自定义控件的实现方法的文章就介绍到这了,更多相关C# winform自定义控件内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>c# Winform自定义控件-仪表盘功能</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: C# winform自定义控件的实现方法