Autor Beitrag
Garzec
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Mo 13.06.16 13:18 
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.

ausblenden C#-Quelltext
1:
Wie hier ...					


Danke :)
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Mo 13.06.16 13:36 
Hi,

du hast uns schonmal beschrieben, was du machen willst. Du hast uns aber nicht genau gesagt, an welcher Stelle/welches Problem du dabei hast?

Zitat:
Ich habe eine Richtextbox, schreibe meinen Text und kann über den Button dann den markierten Abschnitt in eine Box packen.
Und was fehlt dir dabei noch? Etwa die Änderung des markierten Textes(zB kursiv geschrieben, farblich markiert) oder was genau?

Mehr Infos bitte ;)

Gruß Julian

EDIT: Falls du noch gar nicht weiß, wie du anfangen sollst: Es gibt mehrere Herangehensweisen. Willst du zum Beispiel, dass der Text zwischen den Tags erst nach Bestätigung des User (zB durch einen Button-Click) geändert wird, so musst du nur im entsprechenden Click-Event den Text nach den Tags durchsuchen. Willst du, dass er sich nach der Eingabe des Textes ändert (also unmittelbar), dann verwende bei deiner richTextBox das TextChanged-Event und prüfe, ob mit der letzten Eingabe ein Tag gebildet wurde und verarbeite es entsprechend. Aber am besten gibst du uns mehr Infos ;)
Garzec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Mo 13.06.16 13:44 
Einfach die grafische Hervorhebung. Also das in dem Feld ein Rechteck gezeichnet wird und der Code darin dargestellt wird.
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Mo 13.06.16 14:50 
Also wenn du, bereits den Text daraus extrahiert hast, dann musst du nur noch:
1. einen Zeilenumbruch vor dem Tag einfügen
2. deinen Text einfügen (nachdem du das komplette Tag-Konstrukt aus der richTextBox entfernt hast)
3. diesen Text markieren und dabei BackColor, SchriftArt usw. ändern (wenn du die ganze Zeile markiert haben willst, musst du zusätzlich noch bis zum Zeilenende Leerzeichen einfügen)
4. erneuter Zeilenumbruch und weiter den Text analysieren

Vielleicht hilft dir das ja weiter, ansonsten kannst du natürlich weitere Fragen stellen.

Gruß Julian
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 14.06.16 02:50 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Garzec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Di 14.06.16 09:25 
Hi, danke für eure Hilfe. Ich bin mir nicht ganz sicher ob ich mich vielleicht falsch ausgedrückt habe. Ich möchte nicht die Syntax hervorheben. Mir geht es nur um den reinen Container innerhalb einer Richtextbox. Stellen, die man also hervorheben möchte, können über einen Button in einen Container gepackt werden, der sich dann dynamisch der benötigten Größe anpasst und sich in der Richtextbox abbildet.
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Di 14.06.16 09:28 
Moin,

Einen ähnlichen Effekt würdest du ja durch Highlighting (der ganzen Zeile) bekommen. Wie man einen selbst-gezeichneten Container in eine richTextBox kriegt, weiß ich nicht. Was hast du denn schon ausprobiert?
Garzec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Di 14.06.16 10:30 
Ich habe versucht das Ganze mal nachzubauen.

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


Aber die Striche sehen natürlich nicht so umwerfend aus, daher fragte ich nach der Container Möglichkeit.


Zuletzt bearbeitet von Garzec am Di 14.06.16 11:41, insgesamt 2-mal bearbeitet
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 14.06.16 10:48 
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Di 14.06.16 10:49 
user profile iconGarzec hat folgendes geschrieben Zum zitierten Posting springen:
Aber die Striche sehen natürlich nicht so umwerfend aus, daher fragte ich nach der Container Möglichkeit.
Versuche doch, anstatt die Striche einzufügen, einfach die BackColor der Selection zu ändern. Dann hättest du ja wie eine Art Box
Garzec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Di 14.06.16 11:12 
Ja, hatte ich mir auch überlegt, aber da ich ja wie in Word die Hintergrundfarben etc. ändern kann, wäre das vielleicht unpassend, sobald man die gleiche Farbe für eine normale Textformatierung wählt :S
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Di 14.06.16 12:37 
Zitat:
da ich ja wie in Word die Hintergrundfarben etc. ändern kann, wäre das vielleicht unpassend, sobald man die gleiche Farbe für eine normale Textformatierung wählt
Ist doch egal, weil für deinen Container müsstest du ja auch eine Hintergrundfarbe festlegen.
Garzec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Di 14.06.16 12:54 
Da hast du Recht. Ich probiere mal deine Idee aus :)
Garzec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Di 14.06.16 15:23 
Dazu habe ich aber mal eine Frage, wie spreche ich denn in der Richtextbox eine ganze Zeile an?

Natürlich kann ich über SelectionColor etc. die Farbe bestimmen, aber diese geht ja nur über den Text und nicht über die Zeile.

Weiß das jemand?
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Di 14.06.16 15:26 
Ich hätte jetzt einfach den Rest der Zeile mit Leerzeichen aufgefüllt. Dazu musst du ja nur wissen, wieviele Zeichen in eine Zeile deiner Box passen.
Garzec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Di 14.06.16 15:33 
Ne, das hatte ich schon probiert, die Zeichen sind ja alle unterschiedlich groß, aus dem Grund geht es dann hinten immer unterschiedlich auf :S

Naja.. vielleicht kann man es auch einfach nicht umsetzen und es funktioniert nur hier im Web.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 14.06.16 15:43 
Code würde ich generell (so wie auch hier im Forum) nur mit einer nichtproportionalen Schriftart (z.B. "Courier New" darstellen)...