2009-03-13 9 views
0

J'ai une zone de texte multiligne qui affiche généralement des chaînes très longues (accords de licence, par exemple) et une exigence autour de l'affichage est que si l'utilisateur " pages "à travers le texte via la barre de défilement verticale (ne pas cliquer sur les flèches ou la boîte de défilement, mais en cliquant au-dessus ou en dessous de la scrollbox), la dernière ligne doit être la dernière ligne de la page précédente. est rembourré avec des lignes vides pour accueillir cela.Obtention du nombre de lignes affichées dans une zone de texte multiligne dans le cadre compact

Je sais que je peux obtenir la taille de la chaîne, et le nombre de lignes dans la zone de texte, mais est-il possible de récupérer le nombre de lignes affiché en même temps le texte devra être rembourré? En regardant la liste des messages je peux envoyer via P/Invoke, je n'en vois pas un pour demander le nombre de lignes affichées.

Répondre

2

Vous pouvez obtenir le nombre maximum de lignes affichées en même temps en calculant la hauteur de police et en divisant la hauteur de la zone de texte par celle-ci. Juste une idée ... Je ne sais pas si ça va sortir, mais vous pouvez faire quelques tests et voir si cela correspond.

Pour obtenir la police Taille:

public SizeF MeasureString( string text, Font font )

+0

Ceci est un bon début. Il y a apparemment un peu de rembourrage en haut et en bas, donc les maths ne sont pas exacts. Je dois essayer avec des textboxes de différentes tailles pour voir comment ça se passe. – bjanaszek

+0

Je suis heureux d'avoir pu aider :) – Stormenet

Questions connexes