Tipp-Upload: VB.NET 0232: Mikro-Logger im Statuspanel
von Spatzenkanonier
Über den Tipp
Dieser Tippvorschlag ist noch unbewertet.
Der Vorschlag ist in den folgenden Kategorien zu finden:
- Fenster
Dem Tippvorschlag wurden folgende Schlüsselwörter zugeordnet:
GUI
Der Vorschlag wurde erstellt am: 19.03.2008 21:52.
Die letzte Aktualisierung erfolgte am 19.03.2008 21:52.
Beschreibung
Statuslogger verhält sich wie ein StatusPanel, nur dass er sich die letzten 15 oder 20 Einträge merken kann. Das ist etwa nützlich, wenn mehrere Files verarbeitet werden - die fehlerhaften können gemeldet werden. Die gemerkten Einträge sind als aufklappbare Menu-Items einsehbar.
Schwierigkeitsgrad |
Verwendete API-Aufrufe: |
Download: |
' Dieser Source stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' ' Beachten Sie, das vom Designer generierter Code hier ausgeblendet wird. ' In den Zip-Dateien ist er jedoch zu finden. ' ---------- Anfang Projektgruppe StatusLogger.sln ---------- ' --------- Anfang Projektdatei StatusLogger.vbproj --------- ' ------------- Anfang Datei frmStatusLogger.vb ------------- ' IDE-Voreinstellungen: ' Option Explicit On ' Option Strict On ' "My Project"-Einstellungen: ' Imports Microsoft.VisualBasic.ControlChars ' Imports System.Windows.Forms Imports System.Xml Imports System.Xml.Linq Imports System.IO Public Class frmStatusLogger Private _Status As StatusLogger Public Sub New() InitializeComponent() _Status = New StatusLogger(Me.StatusDropRoot, 15) End Sub Private Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs) Handles _ Menu1ToolStripMenuItem.Click, Menu2ToolStripMenuItem.Click, _ Menu3ToolStripMenuItem.Click, Button1.Click, Button2.Click, Button3.Click, _ Label1.Click Select Case True Case sender Is Menu3ToolStripMenuItem, sender Is Menu2ToolStripMenuItem, sender _ Is Menu1ToolStripMenuItem _Status.Log("""", DirectCast(sender, ToolStripItem).Text, """ clicked") Case sender Is Button3, sender Is Button1 _Status.Log("""", DirectCast(sender, Control).Text, """ clicked!") Case sender Is Button2 _Status.Log("""", DirectCast(sender, Control).Text, """ clicked") ' (fictitious data-processing) Dim Xel = XElement.Load(New StringReader(My.Resources.TestXml)) For Each Child In Xel.Elements If Boolean.Parse(Child.@IsValid) Then ' do something useful Else _Status.Log("invalid line: ", Child.ToString) End If Next Me.Label1.Text = Xel.ToString Case sender Is Label1 Me.Label1.Text = "oh, forgotten!" _Status.Log("Label1 clicked") End Select End Sub End Class ' -------------- Ende Datei frmStatusLogger.vb -------------- ' --------------- Anfang Datei StatusLogger.vb --------------- Public Class StatusLogger Private _RootDropDown As ToolStripDropDownButton Private _MaxLogEntries As Integer Public Sub New(ByVal DropDownButton As ToolStripDropDownButton, ByVal MaxEntries As Integer) _RootDropDown = DropDownButton _MaxLogEntries = MaxEntries End Sub Public Sub Log(ByVal ParamArray Args() As Object) Me._RootDropDown.Text = String.Concat(Args) With Me._RootDropDown.DropDownItems If .Count < _MaxLogEntries Then .Add(New ToolStripMenuItem) Else For i As Integer = 0 To _MaxLogEntries - 2 .Item(i).Text = .Item(i + 1).Text Next End If .Item(.Count - 1).Text = Me._RootDropDown.Text End With End Sub End Class ' ---------------- Ende Datei StatusLogger.vb ---------------- ' ---------- Ende Projektdatei StatusLogger.vbproj ---------- ' ----------- Ende Projektgruppe StatusLogger.sln -----------
Diskussion
Diese Funktion ermöglicht es, Fragen, die die Veröffentlichung des Tipps betreffen, zu klären, oder Anregungen und Verbesserungsvorschläge einzubringen. Nach der Veröffentlichung des Tipps werden diese Beiträge nicht weiter verlinkt. Allgemeine Fragen zum Inhalt sollten daher hier nicht geklärt werden.
Um eine Diskussion eröffnen zu können, müssen sie angemeldet sein.