Anomalie Textwarpping RichText
-
Hallo Communitionen!
Ich habe eine App entwickelt, die u.a. Textpassage einrahmt. Dabei taucht aber ein UC auf, den ich nicht ganz fangen kann:
In der Richtextbox wird Code automatisch in der Zeile umgebrochen,
wenn die Textpassage länger ist als die Breite der RTB.'-------------------------------------mein Codeteil blabla"
.'blabla zweiter Teil in neuer Zeile"Der fette Teil wird eingerahmt, das letzte Zeichen/Symbol (hier a) vor dem Zeilenumbruch eben nicht. Dabei habe ich mir die Werte ausgeben lassen und dabei folgende Diskrepanz festgestellt.
In der Darstellung ist das betr. Char/Symbol in der ersten Zeile zu sehen, aber in der Auswertung des Richtexts zu Positionsbestimmung nicht sondern bereits der nächsten Zeile zugehörig!
Wir haben hier also eine Diskrepanz zwischen grafischer Darstellung und Systemparameter im Text.
Schließe ich die oberer Zeile mit einem zusätzlichen <Return> ab ('\n\r'), wird das 'a' wie erhofft eingerahmt. Weiteres <Return> bildet er natürlich eine leere Zeile mit zu erwartenenden Ergebnis der Einrahmung.
Technisch frage ich hier die Position des Rechteckes des Chars ab (Point (x,y)).Daher wollte ich Euch fragen, ob Ihr eine Systemumgebungsvariable oder ein Warpper-Parameter kennt oder eine andere Idee habt, wie ich diese Anomalie auffangen bzw. automatisch bestimmen kann?
-
Du könntest mal versuchen herauszufinden was denn dein System als Line-Separator erwartet.
In Java ginge das über:System.lineSeparator()
Im Anschluss musst du dann "nurnoch" dafür sorgen, dass dein Text konform ist.
-
Nee, das hat keinen Einfluss.
Es existiert kein LineSeparartor an dieser Stelle (\n, \n\r, \\line etc).
Ich habe mir RTF als ASCII ausgeben lassen - keine zusätzätzlichen Symbole.Der Umbruch wird vom System selbst ohne Textverweis vorgenommen, durch internes Parsing unter Win. Die einzige Chance die jetzt noch habe ist ein Darstellungsparameter zu finden für die Darstellungsdiskrepanz in der GUI.
Sonst muss ich die Länge einer Zeile künstlich im String beschneiden - nicht schön...
-
Wovon genau redest du? Was für eine App und was für ein Richedit? Könntest du das präzisieren? Ich könnte mir unterschiedliche APIs drunter vorstellen.
-
Man nee ...
Kopiere mit Copy & Paste unter Win ein Text in
Word, Dialogmasken etc.
Dann hast Du einen automatisierten Zeilenumbruch.
Diese grafische Darstellung steht im Wiederspruch zur internen Systemposition für das letzte Zeichen. Darum geht es...
-
Ohne technologischer Anker bleibt es dein abstraktes Problem.
Wenn ich raten würden geht es um WPF?
-
Nein!
Konkret!
Textumbruch!
Windows!
-
Hilft es, den Textumbruch zu deaktivieren? Kannst dir vielleicht mal EM_SETTARGETDEVICE oder EM_SETWORDWRAPMODE anschauen.
-
Wo willst Du damit hin?
Um es wie gewünscht mit .Net zu erklären:
public const System.Windows.TextWrapping WrapWithOverflow = 0
Member von System.Windows.TextWrappingZusammenfassung:
Ein Zeilenumbruch wird ausgeführt, wenn ein Überlauf der Zeile über die verfügbare Blockbreite hinaus auftritt. Eine Zeile kann jedoch über den Block hinaus überlaufen, wenn der Zeilenumbruchalgorithmus keine Möglichkeit eines Zeilenumbruchs bestimmen kann, wie beispielsweise bei einem sehr langen Wort in einem Container mit fester Breite, in dem kein Bildlauf zulässig ist.http://msdn.microsoft.com/de-de/library/system.windows.textwrapping(v=vs.110).aspx
An den Zeilenumbruchalgorithmus muss ich daran, weil vermutlich der MS-Entwickler diese Anomalie verursacht hat an diesen UC nicht dachte.
Wie ich diese Sache auffangen kann habe ich mittlerweile gefunden:
http://stackoverflow.com/questions/16432981/algorithm-for-auto-indenting-brackets-in-codeIch habe immer noch null Plan, wie ich diesen UC überhaupt diagnostiziere ...
-
Treffer! Schiff versenkt!
http://msdn.microsoft.com/de-de/library/system.windows.frameworkpropertymetadata.affectsmeasure(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1</closed>
-
Zeus schrieb:
Ohne technologischer Anker bleibt es dein abstraktes Problem.
Wenn ich raten würden geht es um WPF?
Prof84 schrieb:
Nein!
Konkret!
Textumbruch!
Windows!Prof84 schrieb:
Treffer! Schiff versenkt!
http://msdn.microsoft.com/de-de/library/system.windows.frameworkpropertymetadata.affectsmeasure(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1</closed>
Made my Day
-
Zeus schrieb:
Made my Day
-
Mechanics schrieb:
Zeus schrieb:
Made my Day
und wieso hat das was mit WPF zu tunen?
-
Was soll es sonst sein? Steht allein schon ganz oben fett:
Namespace: System.Windows
Assembly: PresentationFramework (in PresentationFramework.dll)
XMLNS für XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation