У нас есть UserControls, который имеет вид от RichTextBox
. Мы хотели бы запретить пользователю вводить любое изображение (с копией) в этом пользовательском элементе управления.Отключить вставку изображений в RichTextBox в Winforms
я нашел несколько мест, где говорит об этом:
В настоящее время я имею это решение:
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, но не в контекстном меню.
EDIT
Я попробовал данное предложение:
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 -операция была выполнена и http://stackoverflow.com/questions/2104809/en-protected-and-richedit. Может быть, вы могли бы попытаться использовать это как-то? – dbc