Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Mit welchem Control kann man am Besten in einem Word-Dokument arbeiten?
boonkerz
myCSharp.de - Member



Dabei seit:
Beiträge: 122

Themenstarter:

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

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von boonkerz am .
Attachments
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.860
Herkunft: Waidring

beantworten | zitieren | melden

Hallo boonkerz,
Zitat
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!"
private Nachricht | Beiträge des Benutzers
boonkerz
myCSharp.de - Member



Dabei seit:
Beiträge: 122

Themenstarter:

beantworten | zitieren | melden

Sorry vergessen :(
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Experte

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1.877
Herkunft: Düsseldorf

beantworten | zitieren | melden

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.
  2. 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.

  3. 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.
private Nachricht | Beiträge des Benutzers
boonkerz
myCSharp.de - Member



Dabei seit:
Beiträge: 122

Themenstarter:

beantworten | zitieren | melden

Hallo,

Es ging schon um das generelle Control.

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

Vielen Dank
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Experte

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1.877
Herkunft: Düsseldorf

beantworten | zitieren | melden

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 :D
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.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Palladin007 am .
private Nachricht | Beiträge des Benutzers