Проблема больше, чем просто предотвращение изображения, поскольку RTF может встраивать любой объект, включая текстовые документы или произвольные двоичные данные.
Единственные 3 варианта, которые я могу придумать
Ограничить максимальный размер данных, который вы разрешаете сохранять в базе данных, при этом изображения под этим размером не проблема, так как их размер допустим.
Используйте библиотеку, которая позволит вам анализировать и понимать содержимое RTF, чтобы вы могли проверить его на наличие чего-либо, кроме стандартного текста и форматирования. Затем вы можете удалить любые встроенные двоичные объекты. В качестве альтернативы, вы можете обработать WM_PASTE и проверить буфер обмена на RTF-текст. Если у него есть текст RTF, вы можете анализировать его и удалять внедренные объекты при вставке, а не при сохранении. Если у него нет RTF-версии, не забудьте проверить, есть ли у него текстовая версия.
Перехватывать и обрабатывать сообщение WM_PASTE и использовать RichTextBox.Paste (DateFormats) , чтобы контролировать, какие типы данных могут быть вставлены. Затем вы можете ограничить это только вставкой в буфер обмена простой версии данных, которая не может содержать встроенные объекты. Недостатком здесь является то, что пользователь не может вставить форматированный текст из другого приложения, все форматирование будет потеряно.
1 является самым простым, но допускает, что пользователи смогут вставлять небольшие изображения и другие мелкие объекты, такие как текстовые документы или видео, при условии, что он меньше максимального размера.
2 более сложный, но предлагает лучший пользовательский опыт.
3 проще, чем 2, но предлагает плохой пользовательский интерфейс, так как если бы вы не заботились о форматированном тексте, вы бы не использовали расширенное текстовое поле. Если только вы не хотите использовать простой текст и используете его для большей емкости текста, но если бы это было так, вы бы просто выбрали версию для простого текста для сохранения в БД, которая не содержала бы изображений.