2009-07-30 11 views
2

Wir haben eine Reihe von mehrzeiligen, scrollbaren Winforms Textfeldsteuerelemente in .NET 2.0, die Seitenumbruch implementieren müssen, um den Benutzer durch Verschieben einer einzelnen Seite navigieren können (eine volle Kontrolle von Text) zu einer Zeit.Winforms Textbox Zeilen pro Seite

Als Teil davon muss ich die Anzahl der vollen Zeilen Text, die auf dem Bildschirm an jedem Punkt sichtbar sein können, um herauszufinden, wie viele Seiten die Textbox enthält.

Ich bin mir ziemlich sicher, dass es keine Windows-Nachricht gibt, mit der ich diese Informationen direkt abrufen kann, noch konnte ich eine akzeptable Lösung für dieses Problem finden.

Unten ist die aktuelle Lösung, die wir implementiert haben, dies neigt dazu, gelegentlich einen Rundungsfehler von mindestens einer Zeile zu geben, so dass es weniger als erfolgreich war.

public int LinesPerPage 
{ 
    get 
    { 
     return (int)(this.Height/this.Font.Height); 
    } 
} 

Im Idealfall würde Ich mag den Algorithmus in Zeichnen von Text auf die Steuerung verwendet wissen, aber wenn diese nicht zur Verfügung und anderen Vorschläge Menschen haben würden sehr geschätzt werden.

+0

Wenn Sie ein scrollbares Textfeld verwenden, nehme ich an, Sie möchten die Anzahl der Zeilen, die in das Textfeld passen, bevor es scrollt? – SwDevMan81

Antwort

0

Sie konnten dieses versuchen:

public int LinesPerPage  
{  
    get 
    {  
     return (int)(this.ClientSize.Height/this.Font.Height); 
    } 
} 
+0

Ich nehme an, es gibt auch einige vertikale Abstände zwischen Textzeilen? Wäre das nicht in Betracht zu ziehen? –

+0

Ich habe versucht, das oben und es scheint für Standard-Textfeld und Schriftart Einstellungen funktionieren, ich bin mir nicht sicher, ob Sie die Auffüllung zwischen den Zeilen ändern können, aber wenn Sie können, dann ja – SwDevMan81

0

Die System.Drawing.Graphics Klasse hat eine Methode namens MeasureString. Eine der Überladungen der Methode gibt die angepassten Linien zurück (was aufgrund der anderen übergebenen Parameter sichtbar wäre).

Verwandte Themen