Announcement

Collapse
No announcement yet.

DataGridView mit EventLog Einträgen füllen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DataGridView mit EventLog Einträgen füllen

    Hallo zusammen,

    ich bin was VB.NET angeht noch eher unbedarft, versuche aber gerade mich darin einzuarbeiten. Neben zwei Büchern die ich dazu lese versuche ich mich parallel an einigen Anwendungen, da ich bei solchen praktischen Übungen immer den größten Lerneffekt verspüre.

    In meinem aktuellen, kleinen Projekt versuche ich die Einträge eines Eventlogs in ein Datagridview einzulesen, folgendes habe ich dafür vorbereitet:

    - Windows Forms Anwendung
    - 1 Datagridview "LogSystemGrid"
    - 1 EventLog "LogSystem
    - - Eigenschaft "Log" auf "System" gestellt

    Nun versuche ich im "Form1_Load" Event das DataGridView zu füllen, dafür habe ich folgenden Code "erwurschtelt"

    [highlight=vbnet]
    Imports System.Diagnostics

    Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    LogSystemGrid.DataSource = LogSystem.Entries

    For i = 0 To LogSystem.Entries.Count - 1
    LogSystemGrid.DataSource = LogSystem.Entries(i)
    Next

    End Sub
    End Class
    [/highlight]

    Beim starten der Anwendung dauert es auch einige Sekunden bis die Form zu sehen ist, es muss also "irgendwas" passieren, ich vermute im Form1_Load Event werden die EventLog Einträge durchlaufen, allerdings wird mir, wenn die Form dann zu sehen ist, nichts im DataGridView angezeigt.

    Hat jemand einen Tip, Fingerzeig, Link zu Lektüre oder ähnliches um mich auf den richtigen Weg zur Lösung zu bringen?

    Meine Googlesuche ergab nur Ergebnisse auf ASP.NET Projekte bei denen die Daten per DataGridView.DataBind() in das GridView geschrieben werden, diese Eigenschaft besitzt das DataGridView bei mir aber nicht (VB.NET 2008 Express)

    Ich bin für jeden Tip und jede Information schon jetzt dankbar!

    Viele Grüße
    Rolf

  • #2
    Die Collection hinter EventLog.Entries implementiert leider nicht die notwendigen Interface um die einfach zu binden. Entweder

    - du schaltest eine BindingSource dazwischen
    - du kopierst die EventLogEntries einfach in ein entsprechendes Array das wiederum bindbar ist. EventLog.Entries hat dafür eine CopyTo Methode.
    - du führst eine LINQ Abfrage auf EventLog.Entries aus. Dabei könnte man auch gleich die nicht anzeigbaren Properties wie z.B Data unterdrücken.


    Edit:

    [Highlight=VB.Net]For i = 0 To LogSystem.Entries.Count - 1
    LogSystemGrid.DataSource = LogSystem.Entries(i)
    Next[/Highlight]

    Der Code ist Unsinn. Einfach ersatzlos streichen.

    Comment

    Working...
    X