Aquí hay una extensión de la idea de H.B. que funciona tanto con el texto como con las imágenes.
Encontré que la diferencia siempre es> 4 cada vez que el RTB tiene texto. Sin embargo, si solo pegas una imagen es 3. Para combatir esto miro la longitud de la cadena de la cadena rtf en bruto.
var start = Document.ContentStart;
var end = Document.ContentEnd;
var difference = start.GetOffsetToPosition(end);
HasText = difference > 4 || GetRtfText().Length > 350;
public string GetRtfText()
{
var tr = new TextRange(Document.ContentStart, Document.ContentEnd);
using (var ms = new MemoryStream())
{
tr.Save(ms, DataFormats.Rtf);
return Encoding.Default.GetString(ms.ToArray());
}
}
A través de mis pruebas he encontrado que una caja vacía sin caracteres tiene una longitud de 270. Si i incluso pegar en una imagen que sólo 1 de píxeles de tamaño se hincha a 406.
jugaba con Alternar varias opciones de formato sin escribir ninguna letra y no se han acercado a 300, así que fui con 350 para la línea de base.
El control de longitud puede ser costoso si no hay caracteres de texto, pero se pegaron en una imagen masiva.
El recuento es uno incluso si el RichTextBox está vacío. –
Hmm, eso realmente tiene sentido ... –
He editado mi respuesta para mostrar otro enfoque, aunque es un poco extraño. –