Laden...

Mit welchem Control kann man am Besten in einem Word-Dokument arbeiten?

Erstellt von boonkerz vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.377 Views
B
boonkerz Themenstarter:in
122 Beiträge seit 2004
vor 7 Jahren
Mit welchem Control kann man am Besten in einem Word-Dokument arbeiten?

Hallo,

Wie könnte man sowas umsetzen wie im Bild zu sehen.
Man arbeitet quasi in dem nach her zu druckenden Formular.

Der Vorteil von simplen Tabellen ist das man besser den Eindruck hat
wie die Rechnung am Ende aussieht.

Mfg

6.903 Beiträge seit 2009
vor 7 Jahren

Hallo boonkerz,

wie im Bild

Hast du den Anhang vergessen od. auf welches Bild beziehst du dich?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

B
boonkerz Themenstarter:in
122 Beiträge seit 2004
vor 7 Jahren

Sorry vergessen 😦

2.071 Beiträge seit 2012
vor 7 Jahren

Du meinst das ContextMenu?

Dann musst Du eben ein ContextMenu anzeigen.
Wie das geht, dafür gibts genug Hilfen im Internet.

Ich gehe mal davon aus, das da ist eine RichTextBox und Du hast eine vernünftige Datengrundlage, mit der Du arbeitest. Und Du möchtest jetzt bei verschiedenen Positionen in der TextBox verschiedene Funktion (z.B. in der Tabelle eine neue Zeile) ermöglichen.

Wo Du dich befindest, während das ContextMenu sich öffnet, das kannst Du auf zwei Arten heraus finden:1.Die Property MousePosition gibt dir die Position der Maus auf dem Bildschirm zurück. Mit PointToClient bekommst Du dann den Punkt relativ zum Control.
Zusätzlich gibt es noch die Methode GetCharIndexFromPosition, mit der Du den Index des Zeichens unter der Maus bekommst. Was Du mit diesem Index machen kannst, steht bei Option 2. 1.Die Property SelectionStart gibt dir den Anfang der markierten Auswahl als Zeichen-Index und SelectionLength. Wurde nichts ausgewählt, der Cursor sitzt aber irgendwo, ist die Länge 0.
Zusätzlich gibt es noch die Properts Lines und GetFirstCharIndexFromLine mit deren Hilfe Du dich von dem CharIndex des Cursors gut orientieren in der TextBox orientieren kannst.

Bedenke: Der CharIndex beginnt immer ganz links oben beim ersten Zeichen in der TextBox. Wenn Du drei Zeilen hast, die je 20 Zeichen lang sind, dann befindet sich das 10te Zeichen in Zeile 3 bei Index 49, da Nullbasiert.

Die Position zu verarbeiten, da ist es denke ich am einfachsten, wenn Du WordWrap auf false setzt und dann beim Füllen der TextBox dir merkst, wo genau z.B. die Tabelle beginnt und wie groß sie ist.
Dann kannst Du prüfen, ob in die Tabelle geklickt wurde um anschließend anhand der gewählten Optionen die Daten zu ändern und dann die TextBox neu zu füllen.

B
boonkerz Themenstarter:in
122 Beiträge seit 2004
vor 7 Jahren

Hallo,

Es ging schon um das generelle Control.

Du denkst das man das mit der RichTextBox hinbekommt?
Mal schauen ob das klappt.

Vielen Dank

2.071 Beiträge seit 2012
vor 7 Jahren

So gut kenne ich mich damit nicht aus.
Was Du auf jeden Fall machen kannst, ist für die entsprechende Auswahl (SelectionStart und SelectionLength) BackColor, ForeColor und Font fest legen. Damit hast Du dann schon viele Möglichkeiten.

Ob Du die Linien, wie Du sie im Bild hast, auf "normalem" Weg darstellen kannst, weiß ich nicht.
Im schlimmsten Fall musst Du sie selber zeichnen, das ist aber nicht weiter schwer, solange Du dir die Positionen der Inhalte merkst.
Oder Du schreibst Linien als Zeichen mit rein. Entsprechende Zeichen gibt's im UTF8-Format, die musst Du dann nur noch so stylen wie Du sie brauchst. Mit horizontalen Linien brauchst Du dann zwar eine eigene Zeile, aber das ist dann noch recht einfach.

Du hast auch gleichzeitig den Vorteil, dass Du das dargestellte als RTF-Datei speichern kannst, vorausgesetzt, Du zeichnest nichts selber.

Oder Du zeichnest komplett selber. Wenn das Dokument nur über entsprechende Menüs bearbeitbar ist, sollte das kein Problem sein, nur aufwendig.
Zum Zeichnen von Text (mit Font) und Linien gibt es entsprechende Methoden, die das für dich machen.

PS:
Oder Du suchst dir ein Control raus, was mehr kann. Auf die schnelle habe ich nur das gefunden, kostet aber Geld.

PPS:
Oder Du steigst auf WPF um 😄
Die RichTextBox dort hat extrem viele Möglichkeiten bzw. endlos, weil Du einfach beliebige Controls inline darstellen kannst. Ich hab das auch schon genutzt, ich finde es nicht gerade übersichtlich zu nutzen, aber die Möglichkeiten sind enorm.