方法 1:重写控件的 ProcessCmdKey
方法
public class NoPasteTextBox : TextBox
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.V)) // 检查是否是 Ctrl+V 组合键
{
return true; // 阻止粘贴命令的执行
}
return base.ProcessCmdKey(ref msg, keyData); // 其他命令正常处理
}
}
方法 2:禁用剪贴板操作
另一种方法是使用剪贴板类 Clipboard
的 SetText
方法来拦截粘贴操作。这可以通过在窗体的某个事件中设置剪贴板文本为空来实现,但这并不是一个很好的解决方案,因为它会干扰正常的剪贴板使用。
方法 3:禁用右键菜单中的粘贴选项
如果你只想禁止通过右键菜单进行粘贴,可以重写控件的 ContextMenuStrip
或处理其 Opening
事件来移除粘贴选项。但是,请注意,这不会阻止通过键盘快捷键(如 Ctrl+V)进行的粘贴。
private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
{
// 假设你有一个名为 pasteToolStripMenuItem 的 ToolStripMenuItem 用于粘贴
pasteToolStripMenuItem.Enabled = false; // 禁用粘贴选项
}