Hi ihr
Ich habe mal wieder eine Frage an euch, die ich so nicht gefunden habe im Netz....
Es geht um ein C# .Net Programm, welches zB. verschiedene Aktionen/Ereignisse mitloggen soll. Ok, damit stehe ich vor einem Problem, denn ich habe mir gedacht, ich verwende für die Ausgabe ein WebBrowser-Objekt (Windows.Forms), damit ich mir alles Mögliche an der Ausgabe verändern kann, also z.B. Farbe, Text-Size, Font, Hintergrundfarbe, Textfarbe usw. - je nachdem, welcher Text mitzuloggen ist. Mit einer RichTextBox kann ich das alles ja nicht machen (bzw. nur sehr eingeschränkt).
Nun hab ich es geschafft, mir ein kleines HtmlDocument zusammenzubauen mit einem Table, dem nach und nach die Logs hinzugefügt werden sollen.
Soweit alles klar.
Zuerst wird mein infoWebBrowser (WebBrowser-Objekt) initialisiert:
infoWebBrowser.Navigate("about:blank");
while (infoWebBrowser.Document.Body == null)
{
Application.DoEvents();
}
//Code ist weiter unten zu finden
myInfoLogger = new Logger(infoWebBrowser);
und dann werden die Elemente hinzugefügt (noch ohne TableData-Elemente):
public Logger(WebBrowser fromWebbrowser)
{
///init the doc-object
doc = fromWebbrowser.Document;
format = "d.MM.yyyy, HH:mm:ss";
fromWebbrowser.DocumentText += "<body></body>";
///add the table for the output
doc.Title = "Information Page";
HtmlElement headElem = doc.GetElementsByTagName("head")[0];
HtmlElement linkElem = doc.CreateElement("link");
linkElem.SetAttribute("rel", "stylesheet");
linkElem.SetAttribute("type", "text/css");
linkElem.SetAttribute("href", "formate.css");
headElem.AppendChild(linkElem);
HtmlElement tableElem = doc.CreateElement("table");
tableElem.SetAttribute("border", "1");
tableElem.SetAttribute("frame", "void");
tableElem.SetAttribute("rules", "all");
tableElem.SetAttribute("width", "100%");
doc.Body.AppendChild(tableElem);
HtmlElement tableHeadElem = doc.CreateElement("thead");
tableElem.AppendChild(tableHeadElem);
HtmlElement tableRowElem = doc.CreateElement("tr");
tableHeadElem.AppendChild(tableRowElem);
HtmlElement firstHeaderElem = doc.CreateElement("th");
firstHeaderElem.SetAttribute("width", "160");
firstHeaderElem.InnerText = "Time";
tableRowElem.AppendChild(firstHeaderElem);
HtmlElement secondHeaderElem = doc.CreateElement("th");
secondHeaderElem.InnerText = "Message";
tableRowElem.AppendChild(secondHeaderElem);
HtmlElement tableBodyElem = doc.CreateElement("tbody");
tableElem.AppendChild(tableBodyElem);
}
Alles anzeigen
Nur schaffe ich es jetzt leider absolut nicht in meinem Head des HtmlDocuments die Css-Datei richtig "einzubinden".
Liegt es eventuell daran, dass bei meinem "Link"-Element bei "rel=" und bei "type=" im generierten HTML-Code die "-Zeichen fehlen, denn es steht dann sowas dort:
????
Hat jemand eine Ahnung, wie das gehen könnte, bzw. was ich falsch mache??? Wenn ich den ".Style" von einzelnen Elementen manuell angebe, dann funktioniert alles..... Ich will es aber eben lieber extern in einer Datei, damit alle möglichen (später vorhandenen) WebBrowser darauf zugreifen können....
Oder glaubt ihr, dass hier ist kompletter Schwachsinn und ich soll doch lieber eine RichTextBox nehmen?? Oder etwas ganz anderes???
Lg
Spite