[C#] In Listbox schreiben funktioniert nicht (ist in anderer Klasse)

Sh3va

Grünschnabel
Hallo zusammen,

ich bin schon am verzweifeln und habe Google sehr lange gequält, aber nichts brauchbares gefunden. Ihr seid meine letzte Hoffnung =D

Es geht darum, dass ich ein Programm schreibe, welches bei Events, wie zum Beispiel das Erstellen einer neuen Datei oder das ändern einer, eine Meldung ausspucken soll. Das funktioniert auch soweit, aber ich kann diese Meldung nicht in eine Listbox schreiben (ob das Sinnvoll ist, eine Listbox zu nutzen spielt keine Rolle, ist bloß aus Testzwecken eine Listbox).

Hier mein QuellCode:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Event_Lösung
{
    
    public partial class Form1 : Form
    {
        
        public Form1()
        {
            InitializeComponent();        
            
        }

        public void button1_Click(object sender, EventArgs e)
        {
            BLA p = new BLA();
            p.FSW_Initialisieren();
        }

    }

    public class BLA
    {
        FileSystemWatcher FSW;
        Form1 f = new Form1();

        public void FSW_Initialisieren()
        {


            // Filesystemwatcher anlegen
            FSW = new FileSystemWatcher();

            // Pfad und Filter festlegen
            FSW.Path = @"C:\test";
            // FSW.Filter = "*";
            FSW.IncludeSubdirectories = true;




            // Events definieren
            FSW.Changed += new FileSystemEventHandler(FSW_Changed);
            FSW.Created += new FileSystemEventHandler(FSW_Created);
            FSW.Deleted += new FileSystemEventHandler(FSW_Deleted);
            FSW.Renamed += new RenamedEventHandler(FSW_Renamed);

            // Filesystemwatcher aktivieren
            FSW.EnableRaisingEvents = true;
        }

        // Handler für alle Events
        void FSW_Renamed(object sender, RenamedEventArgs e)
        {
            MessageBox.Show("Umbenannt: " + e.Name);
            f.listBox1.Items.Add("Erstellt: " + e.Name);
      
        }

        void FSW_Deleted(object sender, FileSystemEventArgs e)
        {
            MessageBox.Show("Gelöscht: " + e.Name);
            f.listBox1.Items.Add("Erstellt: " + e.Name);

        }

        void FSW_Created(object sender, FileSystemEventArgs e)
        {
            MessageBox.Show("Erstellt: " + e.Name);
            f.listBox1.Items.Add("Erstellt: " + e.Name);

        }

        void FSW_Changed(object sender, FileSystemEventArgs e)
        {
            MessageBox.Show("Geändert: " + e.Name);
            f.listBox1.Items.Add("Erstellt: " + e.Name);
            
        }


    }
    
    
}

Mein Problem ist bei Zeile (u.a.) 72. Es wird kein item in die Listbox geschrieben, die MessageBox wird aber erstellt.
Ich hoffe, ihr könnt mir helfen.

Gruß,
Sh3va
 
In Zeile 34 erstellst du eine neue Instanz deiner Form. Und in Zeile 72 fügst du den Eintrag dann der "falschen" ListBox hinzu. Du hast effektiv zwei Forms: eine sichtbare und eine unsichtbare. In Zeile 72 greifst du auf die ListBox der unsichtbaren Instanz hinzu. Du kannst probeweise mal ein f.Show(); vor oder nach Zeile 72 einfügen. Dann wird deine unsichtbare Form sichtbar.
 

Neue Beiträge

Zurück