Beschreibung:
Hi folks,
Hintergrund für die Entwicklung des eigenen Controls war
dieser Thread. Ich habe es nicht (performant) hinbekommen, dass ich den Cursor ausschalte, in verschiedenen Farben loggen (was über Select geht) kann und dann auch noch Selectionen als Ganzes deaktivieren kann, denn beim Vergrößern solcher Consolen mittels Doppelklick wird dann immer Text selektiert, was total nervig ist, bzw. häßlich aussieht. Bei "meiner Lösung mit der RichTextBox" hatte ich zum Schluß bei sieben Ereignissen den Aufruf für die API-Function HideCaret drinnen und beim Mausmove-Ereignis innerhalb der RichTextBox hatte ich zeitweise 20 Prozent CPU-Auslastung und die Selections waren auch nicht ganz verschwunden und hin und wieder tauchte der Cursor immer noch auf. Also habe ich mich entschiedenen ein eigenes Control zu bauen. Ich benutze jetzt immer (vorher auch schon mit der RichTextBox) in meinen Projekten solche Consolen, weil ich diese Popup-Fenster einfach hasse und mit diesen Consolen ist sichergestellt, dass man z.B. bei Programmen, die auf Servers laufen, am z.B. nächsten Tag mal schnell in die Console schaut und nicht immer den Umweg über Popup-Fenster oder Logfiles gehen muss (oder nicht geht, weil man keine Fenster implementiert hat oder nicht gerade weiß, wo sich das Logfile befindet, bzw. nicht vorhanden ist ... auch habe ich oft mit Programmen zu tun, wo kein Mensch mehr weiß, was die überhaupt machen, ich bekomme dann immer nur zur Antwort, das es nicht mehr so geht wie immer .. und manchmal am Ende einer Operation ein Fenster mit dem Hinweis "Fertig !" erscheint ... LOL .. echt kein Witz, alles schon gehabt ...
OK, wie wird das nun benutzt,
die Console besteht aus einem WebBrowser Control, so ist sichergestellt, dass man auch hin und wieder mal HTML-Code (Bilder oder Tabellen ect.) loggen kann, bzw. auch formatierte Ausgaben durchführen kann (HTML-Style). Das Webbrowser Control habe ich public gemacht, so kann man eben damit machen was man will (Formulare, AJAX ect.).
Das loggen ist total simple. Control einfach wie gewohnt auf ein Formular ziehen und die Methode LogMessage aufrufen. Es gibt vier vordefinierte ConsoleLoggerConfig Objekte, die aber ignoriert oder überschrieben werden können - natürlich können auch eigene angelegt werden.
Hier mal ein Screenshot von der Testform für das Control ...
Schlagwörter: Console, Logger, ConsoleLogger