Comment ajouter \ ligne dans RTF en utilisant le contrôle RichTextBox
Lors de l'utilisation de Microsoft contrôle RichTextBox, il est possible d'ajouter de nouvelles lignes comme ça...
richtextbox.AppendText(System.Environment.NewLine); //appends \r\n
Cependant, maintenant, si vous affichez le rtf généré le \r\n caractères sont convertis \par pas \ligne
Comment puis-je insérer un \contrôle de la ligne de code dans le générés RTF?
Ce qui ne fonctionne pas:
Remplacement du Jeton
Hacks comme l'introduction d'un jeton à la fin de la chaîne, puis de le remplacer après le fait, donc quelque chose comme ceci:
string text = "my text";
text = text.Replace("||" "|"); //replace any '|' chars with a double '||' so they aren't confused in the output.
text = text.Replace("\r\n", "_|0|_"); //replace \r\n with a placeholder of |0|
richtextbox.AppendText(text);
string rtf = richtextbox.Rtf;
rtf.Replace("_|0|_", "\\line"); //replace placeholder with \line
rtf.Replace("||", "|"); //set back any || chars to |
Ce presque fonctionné, il se décompose si vous avez à l'appui de texte de droite à gauche comme la droite vers la gauche de contrôle de la séquence se termine toujours dans le milieu de l'espace réservé.
Envoi de Messages Clés
public void AppendNewLine()
{
Keys[] keys = new Keys[] {Keys.Shift, Keys.Return};
SendKeys(keys);
}
private void SendKeys(Keys[] keys)
{
foreach(Keys key in keys)
{
SendKeyDown(key);
}
}
private void SendKeyDown(Keys key)
{
user32.SendMessage(this.Handle, Messages.WM_KEYDOWN, (int)key, 0);
}
private void SendKeyUp(Keys key)
{
user32.SendMessage(this.Handle, Messages.WM_KEYUP, (int)key, 0);
}
Ce aussi finit par être converti en un \par
Est-il un moyen de poster un message complet directement à la msftedit de contrôle pour insérer un caractère de contrôle?
Je suis totalement perplexe, toutes les idées, les gars? Merci pour votre aide!
source d'informationauteur Steve Sheldon
Vous devez vous connecter pour publier un commentaire.
L'ajout d'une Unicode "Séparateur de Ligne" (U+2028) fonctionne aussi loin que mes tests ont montré que:
Quand je lance le programme, j'obtiens:
Il fait ajouter
\line
au lieu de\par
.Puisque vous souhaitez utiliser un autre code RTF, je pense que vous pouvez avoir besoin d'oublier au sujet de l'simpliste méthode AppendText() n'et manipuler les .Rtf propriété de votre RichTextBox directement à la place. Voici un exemple (testé) à démontrer:
De sortie:
Original les données au format RTF:
De nouvelles Données au format RTF:
Résultant Données au format RTF:
si vous utilisez les paragraphes à écrire à richtextbox vous pouvez utiliser le saut de ligne() même code indiqué ci-dessous
Espérons que cette aide!