我們有一個UserControls,它從RichTextBox
開始。我們希望禁止用戶在此用戶控件中輸入任何圖像(帶有複製粘貼)。在WinForms的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豐富的編輯控件做到這一點的建議:https://stackoverflow.com/questions/2250759/how-does-a-cricheditctrl-know-a-paste -operation-has-been-performed和http://stackoverflow.com/questions/2104809/en-protected-and-richedit。也許你可以嘗試利用這個不知何故? – dbc 2015-04-02 18:47:22