Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

1

14.06.2016, 10:33

Selektierten Text einer Richtextbox in einen Container packen

ich versuche in einem Projekt das optische Hervorheben von Code in einer Richtextbox nachzubauen. Deshalb wollte ich fragen, ob mir jemand sagen kann, ob es überhaupt möglich ist und wie es funktioniert, bzw. nach was man googlen kann.

Ich habe eine Richtextbox, schreibe meinen Text und kann über den Button dann den markierten Abschnitt in eine Box packen.

C#-Quelltext

1
Also wie hier quasi. Einfach ein Container der den markierten Text umschließt.


Ich habe mal versucht das Ganze kurz mit Strichen nachzubauen

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private void btnQuellcode_Click(object sender, EventArgs e)
        {
            string markierterText = edtTextfeldEintraege.SelectedText;
            int linienCountFensterNormal = 87;
            int linienCountFensterMaximiert = 248;
            string strichKette = "";
            if (WindowState == FormWindowState.Normal)
            {
                for (int i = 0; i < linienCountFensterNormal; i++)
                {
                    strichKette += "-";
                }
            }
            else if (WindowState == FormWindowState.Maximized)
            {
                for (int i = 0; i < linienCountFensterMaximiert; i++)
                {
                    strichKette += "-";
                }
            }
            strichKette += Environment.NewLine;
            string neuerString = "\r\n\r\n" + markierterText.Insert(0,strichKette) + Environment.NewLine + strichKette + "\r\n\r\n";
            edtTextfeldEintraege.SelectedText = neuerString;
        }


Es läuft noch nicht exakt so, wie ich es haben will, aber darum geht's ja auch nicht. Meine Frage ist, ob ein Container möglich ist, da die Striche ja doch etwas langweilig aussehen. Oder ob man hier nur die Container nutzen kann weil man sowas im Web darstellen kann, aber nicht in einer Richtextbox.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Garzec« (14.06.2016, 11:40)


Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

2

14.06.2016, 17:14

Eine Hervorhebung innerhalb von Textfeldern wird man grundsätzlich nicht über separate Komponenten (bspw. Boxem) lösen, sondern man wird eher den vorhanden Text formatieren (bspw. farbige Hinterlegung) siehe MSDN.

Nachtrag: ich habe gerade das andere Thema gesehen, in dem du die Frage ebenfalls gestellt hast. Aus dieser ging wiederum hervorder, dass du Code innerhalb von Text platzieren willst, der dann so dargestellt werden soll. Für mich klang es eher danach, als wolltest du innerhalb von Code, der sich in einer RichTextBox befindet Hervorhebungen durchführen. Die von mir verlinkte Seite ist also nicht ganz das gesuchte, könnte aber an anderen Stellen von Interesse sein.
Allerdings glaube ich nicht, dass du in einer RichTextBox andere Elemente platzieren kannst. Entweder sorgst du dafür, dass du mehrere Textboxen "kombinierst" und zwischen diese die anderen Elemente packst, oder du müsstest etwas anderes für die Darstellung verwenden, was das Bearbeiten entsprechend deiner Vorstellungen unterstützt.
Am einfachsten wäre es, wenn im Bearbeiten-Modus der reine Quellcode bearbeitet wird und nur in der Lesen-Ansicht alles formatiert dargestellt wird.

Ein anderer Ansatzpunkt wäre evtl, wenn du ein HTML-Control verwendest, in dem du dann wieder beliebiges HTML (mit contenteditable="true") darstellen könntest. Das Problem hier wäre wieder, dass die Elemente dann alle HTML-Elemente wären und "nicht" wie die anderen Controls der Software aussehen würden.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Sacaldur« (14.06.2016, 17:21)


Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

3

14.06.2016, 18:07

Hey,
ich habe mich jetzt für die einfache Methode entschieden die Zeile der markierten Stelle einfach farbig zu markieren, da ich sonst einfach keine Lösung mehr gefunden hab :D

Selbst bei Google gibt es genügend Fragen, wobei viele nur diese Möglichkeit angeben.

Werbeanzeige