Laden...

CodeTags in Richtextbox nachbauen

Erstellt von Garzec vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.699 Views
G
Garzec Themenstarter:in
50 Beiträge seit 2016
vor 7 Jahren
CodeTags in Richtextbox nachbauen

Hi,

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.


Wie hier ...

Danke 😃

3.825 Beiträge seit 2006
vor 7 Jahren

Syntax Highlighting heißt das Stichwort, wenn die Hervorhebung über eine Farbe erfolgt.

Ich benutze dazu dieses Projekt :

http://www.codeproject.com/Articles/161871/Fast-Colored-TextBox-for-syntax-highlighting

bzw.

https://github.com/PavelTorgashov/FastColoredTextBox

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

G
Garzec Themenstarter:in
50 Beiträge seit 2016
vor 7 Jahren

Hi, danke für deine Antwort 😃

Ich bin mir nicht sicher ob es das ist, was ich suche. Mir geht es nicht um das Hervorheben von Syntax. Mir geht es nur um den "Container" der sich in der Richtextbox aufbauen soll. Den Code, den ich markiert habe, soll ich über einen Button dann in einen Container/ eine Box packen können, die sich dann vom geschriebenen Text abhebt.

16.835 Beiträge seit 2008
vor 7 Jahren

Du hast gefragt..

ich versuche in einem Projekt das optische Hervorheben von Code in einer Richtextbox nachzubauen.

Was Du mit "Container" meinst ist mir schleierhaft.

T
314 Beiträge seit 2013
vor 7 Jahren

Hast Du dir mal den Editor hier angesehen? Wenn Du so eine CodeTag hinzufügst, wird der eigentliche Inhalt eben mit diesen versehen.

[CSHARP]Wie hier...[/CSHARP]

Diese Tags muss dein Control entsprechend auswerten und darstellen.

16.835 Beiträge seit 2008
vor 7 Jahren

Ich würde aber von BB Code heute abstand nehmen und mir eher Markdown ansehen.
Das ist viel verbreiteter in der Entwicklerwelt und auch deutlich einfacher.

Implementing a Markdown Engine for .NET

771 Beiträge seit 2009
vor 7 Jahren

Hi Garzec,

schau mal in der Rich Text Format (RTF) Specification nach, ob diese so etwas überhaupt anbietet (also einen abgesetzen Container). Ich kenne bei RTF nur Textmarkierungen. Und nicht alles, was in der Spec angegeben ist, wird auch vom RichTextBox-Control unterstützt (z.B. Tables, Pictures, Objects, etc.).

Du kannst ja auch mal mit WordPad testen, was du erreichen möchtest.

G
Garzec Themenstarter:in
50 Beiträge seit 2016
vor 7 Jahren

Also ich habe mal versucht das Ganze erstmal mit Strichen nachzubauen.


        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;
        }

Da die Striche aber langweilig aussehen fragte ich nach anderen Möglichkeiten 😛

G
Garzec Themenstarter:in
50 Beiträge seit 2016
vor 7 Jahren

Also nach einigem Testen funktioniert es glaube ich nur im Web oder mit grafischer Trickserei ... 😕

3.170 Beiträge seit 2006
vor 7 Jahren

Hallo,

Du könntest statt einer RTB ein WebBrowser-Control verwenden. Damit lässt sich das recht leicht erledingen. Die Boxen wären dann normale <div>...</div>.
Schau mal in Textfeld mit Formatierung und klickbarem Text, ist nicht genau Dein Anwendungsfall, aber Du kannst ähnlich vorgehen.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca