2016-06-28 6 views
0

Jetzt versuche ich einen neuen (Boot) Textleser von C# WPF zu erstellen.Wie kann ich die Länge der Zeichenfolge für eine Seite des Bildschirms erhalten?

Ich stehe auf ein Problem. Ich weiß nicht, wie kann ich eine Zeichenfolge (aus einer Textdatei) als eine Seite des Bildschirms teilen. (wie eine Buchseite) (eine Seite des Bildschirms wird durch ein Label-UI-Steuerelement ergänzt.) Da die Zeichenfolge 'Neue Zeile \ n' & 'Tab' Zeichen hat. So kann ich nicht zählen, wie viele Zeichen in ein Etikett (eine Seite des Bildschirms) eingefügt werden können. label.TextLength gibt die Anzahl der Zeichen zurück, die in das Label eingefügt werden können. Aber, wenn die Zeichenkette '\ n' hat, macht es viele Leerzeichen.

Also ich hoffe zu wissen, wie kann ich die Länge der Zeichenfolge zählen, die in ein Label mit '\ n' eingefügt werden kann. Oder, bitte führen Sie mich, wie kann ich dieses Programm einfach erstellen, indem Sie eine andere UI-Steuerelemente verwenden.

< Zusatzinfos>

Vielen Dank für Ihre Meinung. Ich habe hinzugefügt, wie ich die Label-Kontrolle verwende. In Standard-Label UI-Steuerelement geändert seine Größe von der Zeichenfolge, die die Bezeichnung eingefügt wird. In diesem Programm werde ich jedoch die Etikettenkontrollgröße festlegen. Die Größe passt in die Formulargröße.

Also, ich sollte die Breite & Höhe (Zeilen) des Etiketts kennen. Oder ich hoffe, Kontrollen oder Bibliotheken für mein Programm zu wissen. (Leider kann ich es noch nicht finden.)

Vielen Dank!

+0

Haben Sie versucht, ein TextBlock-Steuerelement mit TextWrapping = "True" zu verwenden? – CiccioRocca

+0

Ich werde TextBlock versuchen. Aber ich bin mir nicht sicher, nur eine Seite von String .. weil es von vielen Dingen abhängt. Ich hoffe, von der Benutzeroberfläche zurück zu kommen, wie lang String in dieser UI ist. Also sollte ich nächste Seite von xxx starten. –

+1

Nun, es hängt von Bildschirmgröße, Schriftfamilie, Schriftgröße usw. ab. Haben Sie das Fließdokument nicht gesehen? Schau es dir an. https://msdn.microsoft.com/en-us/library/aa970909(v=vs.100).aspx Ein weiterer nützlicher Link: http://www.codeproject.com/Articles/31834/FlowDocument-pagination-with- wiederholende-Seite-Header – CiccioRocca

Antwort

0

Flowdocument die Lösung ist, was ich will! Danke, lassen Sie mich das Ding wissen. - Cicciorocca !!

0

Ihr Label AutoSize=true und MaximumSize=new Size(maximumPageWidth, 0); Auf diese Weise haben können Ihr Etikett automatisch Zeilenumbruch, wenn maximale Breite erreicht ist. Jede Zeile erhöht nur die Höhe des Etiketts.

Dann müssen Sie Ihren Text Zeile für Zeile zu dieser Beschriftung hinzufügen. Jedes Mal, wenn Sie diesem Label eine Zeile hinzufügen, prüfen Sie, ob maximumPageHeight erreicht ist oder nicht.

Wenn maximale Höhe erreicht ist, dann ist das, wo Ihre Seite endet. Danach müssen Sie Ihre nächste Zeile zu einer neuen Seite hinzufügen.

Edit: Above Lösung funktioniert, wenn Sie System.Windows.Forms.Label verwenden

+0

Frage ist über WPF – AnjumSKhan

Verwandte Themen