如何在C#Winform中的文本框事件处理程序中禁用或捕获“粘贴”或“控制+ V”事件?

时间:2011-03-11 04:58:34

标签: c# winforms event-handling

您能为此提供代码段吗?

1 个答案:

答案 0 :(得分:8)

捕捉击键是不够的,用户也可以使用上下文菜单进行粘贴。这需要捕获较低级别的操作,您必须捕获WM_PASTE消息并阻止它到达本机Windows控件。在项目中添加一个新类并粘贴下面显示的代码。编译。将新控件从工具箱顶部拖放到表单上。它确实有一个缺陷,在上下文菜单中没有禁用粘贴命令。没有简单的解决方法,你必须用自己的替换它。

using System;
using System.Windows.Forms;

class NopasteTextBox : TextBox {
    protected override void WndProc(ref Message m) {
        // Trap WM_PASTE:
        if (m.Msg == 0x302) return;
        base.WndProc(ref m);
    }
}