Ajustement automatique de la WinForms RichTextBox à son contenu
Quelqu'un sait comment je peux redimensionner dynamiquement un contrôle RichTextBox à son contenu?
OriginalL'auteur mrtaikandi | 2009-04-09
Vous devez vous connecter pour publier un commentaire.
Je suppose que je suis beaucoup trop tard, mais jetez un oeil à cette
C'est seulement deux lignes de code:
wordwrap
doit =true
OriginalL'auteur dardo
À nouveau en supposant une police fixe pourriez-vous faire quelque chose comme:
Qui ne fonctionne que si un seul (par défaut) de police avec aucune autre mise en forme est utilisée, auquel cas je n'aurais pas utilisé un Richezone de texte dans la première place.
OriginalL'auteur Luke North
C'est une sorte de douleur - le C# RichTextBox est souvent frustrant de travailler avec. Êtes-vous essayer de la taille de la boîte assez grande pour contenir son contenu sans aucune barre de défilement?
Si le RichTextBox a une constante de la police, vous pouvez utiliser TextRenderer.Savoir measuretext de mesurer simplement la taille requise, et passe dans la boîte de largeur comme une contrainte.
La ContentsResized événement vous donne un ContentsResizedEventsArgs, qui vous donne un NewRectangle qui vous indique la taille de la zone de texte est. Mais il se déclenche uniquement lors de la modification du texte, ce qui n'est pas aussi utile si vous souhaitez simplement une mesure existante richtextbox (bien que vous pourriez probablement faire quelque chose hacky comme l'ensemble de la zone de texte à lui-même, le déclenchement de cet événement).
Il y a aussi un tas d'appels Win32 api, comme l'utilisation de EM_GETLINECOUNT (http://ryanfarley.com/blog/archive/2004/04/07/511.aspx), etc.
OriginalL'auteur jean
voir ce lien
vous suffit d'utiliser
ContentsResized
Événement même ceci:OriginalL'auteur amir110
Vraiment une solution bon marché (celui qui est potentiellement lourde de problèmes) est à remplir simultanément une adaptation automatique de l'étiquette avec le texte en utilisant la même police et la taille, puis il suffit de copier la largeur de l'étiquette à la largeur de la RTB.
Donc, comme ceci:
Ha Ha. Il fonctionne...
OriginalL'auteur user1112234
J'ai trouvé une solution pour la zone de texte enrichi hauteur de questions ... j'ai modifiée pour un usage général..
Créer les structures suivantes dans votre application....
Créer des variables privées suivantes dans votre classe pour la forme (où vous en avez besoin pour calculer les riches hauteur de texte)
Ajoutez la méthode suivante à la Classe de la forme
Vous devrez peut-être modifier la méthode ci-dessus pour le faire fonctionner selon vos besoins...
Assurez-vous d'envoyer Rtf chaîne de caractères comme paramètre à la méthode n'est pas normal de texte et aussi assurez-vous d'attribuer à disposition de la largeur et de la hauteur de la Richtextbox variable dans la méthode...
Vous pouvez jouer avec retour à la ligne en fonction de vos besoins...
OriginalL'auteur Bathineni
Il est beaucoup plus facile à utiliser GetPreferredSize, comme décrit dans cette réponse. Alors vous n'avez pas besoin d'attendre pour un ContentsResized événement.
OriginalL'auteur ulatekh