【发布时间】:2015-06-06 02:02:32
【问题描述】:
我们有一个继承自RichTextBox 的用户控件。我们想禁止用户在这个用户控件中输入任何图像(带有复制粘贴)。
我发现有几个地方说到这个:
目前我有这个解决方案:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys)Shortcut.CtrlV || keyData == (Keys)Shortcut.ShiftIns)
{
if (Clipboard.ContainsImage())
{
return false;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
这适用于使用 CTRL+C-CTRL+V 进行复制粘贴,但不适用于上下文菜单。
编辑
我尝试了给定的命题:
public class CustomRichBox : RichTextBox
{
private const int WM_PASTE = 0x0302;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_PASTE )
{
if (Clipboard.ContainsImage())
{
return;
}
}
base.WndProc(ref m);
}
}
但是当我按 CTRL+V 时,我没有收到此消息
【问题讨论】:
-
不是一个正确的答案,但这里有一些关于如何使用非托管 MFC 富编辑控件执行此操作的建议:stackoverflow.com/questions/2250759/… 和 stackoverflow.com/questions/2104809/en-protected-and-richedit。也许您可以尝试以某种方式利用它?
标签: c# winforms richtextbox