Autor |
Beitrag |
Csharp-programmierer
      
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Mo 13.04.15 20:06
Moin Leute. Ich habe einen HTML- Editor programiert.
Der Code zum debuggen:
C#-Quelltext 1:
| System.Diagnostics.Process.Start(path); |
Die Intialisierung der Variable path:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| SaveFileDialog save = new SaveFileDialog(); save.Filter = "HTML- Datei|*.html|Rich Text- Datei|*.rtf|Text- Datei|*.txt";
try { if (save.ShowDialog() == DialogResult.OK) { path = save.FileName; this.richTextBox1.SaveFile(path, RichTextBoxStreamType.RichText); } } catch { MessageBox.Show("Ein unerwarteter Fehler ist aufgetreten. Bitte ersuchen Sie es erneut.", "Unerwarteter Fehler", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1); } |
Ich habe auch noch einen Button, der bewirkt, dass das HTML- Grungerüst eingefüght wird. (<html><head><title></title>....)
Wenn ich das Programm nun degugge passiert folgendes:
- in der Internetseite, die geöffnet wurde, steht im boby bereich ganz oben:
Quelltext 1:
| {\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Arimo;}} \viewkind4\uc1\pard\lang1031\f0\fs41 \par \par \par \par \par \par \par \par \par \par } |
Wenn ich jetzt zum Bespiel die Hintergrundfarbe ändere oder eine textBox einfüge, passiert das auch. Oben ist halt nur immer der blöde Text.
PS: Wenn es wichtig ist: Auf der selben Form habe ich auch einen Webbrowser, der mit der richTextBox verbunden ist. LG
Moderiert von Christian S.: C#-Tags hinzugefügt
Moderiert von Th69: C#- und Code-Tags hinzugefügt
Moderiert von Th69: Titel geändert: war "Wo ist hier der Fehler?"
|
|
Palladin007
      
Beiträge: 1282
Erhaltene Danke: 182
Windows 11 x64 Pro
C# (Visual Studio Preview)
|
Verfasst: Mo 13.04.15 22:23
RTF ist nicht einfach nur Text
Schau dir mal die gespeicherte Datei an, da steht kein HTML drin, sondern das, was die RichTextBox aus dem eingegeben HTML-Code macht.
Wozu brauchst Du eigentlich RTF? Das speichert noch deine Formatierungen dazu.
HTML ist doch nur einfacher Text, keine Formatierungen, aber genau dafür ist RTF gedacht.
Besser wäre ein ganz einfacher Text-Editor, der das dann als einfachen Text ohne alles speichert.
Die Formatierung vom HTML-Code darfst Du nicht mit speichern, die hat im HTML-Code nichts zu suchen, sondern ist ein Feature vom HTML-Editor, der die Formatierung beim Öffnen bzw. Bearbeiten des Codes immer wieder anpasst.
Für diesen Beitrag haben gedankt: Csharp-programmierer
|
|
Csharp-programmierer 
      
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Di 14.04.15 13:25
Danleschön für deine Antwort. Klappt jetzt alles. Eine Frage hab ich noch:
Wenn ich ein Kommentar(<!----!>) per Button einfüge, sollte die Schriftfarbe grün sein. Dadurch, dass der Text jetzt in PlainText gespeichert wird, geht diese Formatierung ja futsch. Gäbe es da irgendeine Alternative?
LG 
|
|
Th69
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Di 14.04.15 14:35
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Di 14.04.15 14:40
Was soll den jetzt genau gespeichert werden? Gültiges html, rtf (so das es im Editor nach deinen Wünschen formatiert anzeigbar ist), beides, nix davon sondern was ganz anderes?
Was du nicht bekommst sind gültiges html und nach deinen (anderen) Regeln formatierter Text um ihn im deinem Editor wieder anzuzeigen zu können in einer Datei.
Für diesen Beitrag haben gedankt: Csharp-programmierer
|
|
Palladin007
      
Beiträge: 1282
Erhaltene Danke: 182
Windows 11 x64 Pro
C# (Visual Studio Preview)
|
Verfasst: Di 14.04.15 17:44
Die Formatierung würde ich nicht mit speichern, das bringt nur unnötigen Aufwand, der dir am Ende nichts bringt.
Formatieren (eben Syntax Highlighting) musst Du sowieso on the fly während der Nutzer arbeitet, schließlich ändert sich der Code permanent. Wenn Du das hast, kannst Du das auch gleich beim Lesen der html-Datei machen.
So hast Du eine valide HTML-Datei, die beim Öffnen aber schön formatiert ist.
So machen es alle anderen Editor auch, Notepad++ kann das für zahllose Sprachen und gespeichert wird nur reiner Text.
Für diesen Beitrag haben gedankt: Csharp-programmierer
|
|
Csharp-programmierer 
      
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Di 14.04.15 18:25
Genau sowas habe ich gesucht. Der Code soll in einer Internetseite sein (PlainText) und Schlüsselwörter(<html>...) sollen in einer anderen Farbe stehen. Mit dem Highliting ist eine sehr gute Idee. Jedoch weiß ich nich, wie man das macht. Können Sie (du) mit ein Code Beispiel senden?
PS: meine Programm sollte (mit weitem Abstand natürich XD) an NotePad++ kommen.
LG 
|
|
Th69
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Di 14.04.15 18:47
Ich habe dir doch drei Links gepostet. Das Einarbeiten mußt du dann schon selber machen...
|
|
Csharp-programmierer 
      
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Di 14.04.15 19:16
Ich habe das jetzt mal probiert:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| Style GreenStyle = new TextStyle(Brushes.Green, null, FontStyle.Italic); ... private void fastColoredTextBox1_TextChanged(object sender, TextChangedEventArgs e) { e.ChangedRange.ClearStyle(GreenStyle); e.ChangedRange.SetStyle(GreenStyle, @"//.*$", RegexOptions.Multiline); } |
Jedoch wird folgendes rot unterkringelt:
- Style
- TextSyle
- TextChangedEventArgs e
- GreenStyle
- RegexOptions
MFG
Moderiert von Th69: C#-Tags hinzugefügt
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Di 14.04.15 19:55
Du must die Namespaces (die using directiven am Anfang der Codedatei) hinzufügen in denen die Klassen stecken.
Im ContextMenü, wenn du das auf einem der angemeckerten Begriffe öffnest, solltest du den Menüpunkt "Resolve" finden der dir dabei hilft.
Das er über einen Args Klasse des Events stolpert heißt für mich du hast eher unverstanden den gesamten Codeblock per Copy&Paste übernommen hast. Hättest du den TextChanged Event per Designer verdrahtet wäre die TextChangedEventArgs vollqualifiziert mit Namespace da gelandet. Du must garantiert auch noch den TextChanged Event verdrahten damit der auch aufgerufen wird.
|
|