FileSystemWatcher Pfad ändern ?
FileSystemWatcher Pfad ändern ?
Hallo Community,
In meinem Programm soll ein "fileSystemWatcher" einen Ordner überwachen. Ich möchte aber in meinem Programm den Pfad des "flieSystemWatchers" ändern, also den Ordner den er überwachen soll. Das sollte zb. durch einen Folderbrowser oder eine Textbox geschehen. Das Programm wird in Visual C# geschrieben. Ich hab schon viele Möglichkeiten versucht aber keine hat funktioniert, und ich hoffe ihr könnt mir helfen.
Zum Code möchte ich noch sagen dass er noch nicht ganz ausgearbeitet ist weil ich an dieser Stelle hänge.
Hier der Code:
lg
EinTyp.
Hallo Community,
In meinem Programm soll ein "fileSystemWatcher" einen Ordner überwachen. Ich möchte aber in meinem Programm den Pfad des "flieSystemWatchers" ändern, also den Ordner den er überwachen soll. Das sollte zb. durch einen Folderbrowser oder eine Textbox geschehen. Das Programm wird in Visual C# geschrieben. Ich hab schon viele Möglichkeiten versucht aber keine hat funktioniert, und ich hoffe ihr könnt mir helfen.
Zum Code möchte ich noch sagen dass er noch nicht ganz ausgearbeitet ist weil ich an dieser Stelle hänge.
Hier der 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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)
{
label3.Text = "Aktion entdeckt";
fileSystemWatcher1.Path = folderBrowserDialog1.SelectedPath;
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
label1.Text = "Überwachung Aktiv";
label3.Text = "Keine Aktion";
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
label1.Text = "Überwachung Deaktiviert";
label3.Text = "Unbekannt";
}
private void button1_Click(object sender, EventArgs e)
{
new FolderBrowserDialog().ShowDialog();
label8.Text = folderBrowserDialog1.SelectedPath;
}
}
}
lg
EinTyp.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 172582
Url: https://administrator.de/contentid/172582
Ausgedruckt am: 25.11.2024 um 16:11 Uhr
18 Kommentare
Neuester Kommentar
Hi,
schreib den Pfad in die Registry und lies ihn mit deinem "FileSystemWatcher" von dort ein.
Gruß
schreib den Pfad in die Registry und lies ihn mit deinem "FileSystemWatcher" von dort ein.
Gruß
Ok,
noch was
gehört da meiner Meinung nach nicht mal hin.
das das Event nur ausgeführt wird wenn der Watcher was findet.
ich würd den Pfad in Settings schreiben und dann im Form_Load Event zuweisen.
noch was
private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)
fileSystemWatcher1.Path = folderBrowserDialog1.SelectedPath;
gehört da meiner Meinung nach nicht mal hin.
das das Event nur ausgeführt wird wenn der Watcher was findet.
ich würd den Pfad in Settings schreiben und dann im Form_Load Event zuweisen.
So schwierig kann das doch nicht sein. Du überprüfst mit deinem "SystemWatcher" per Timer, ob ein bestimmter Registry-Key gesetzt ist oder sich geändert hat und verwendest den.
Mit deinem "Browser" mit der tollen Textbox setzt du den Reg-Key mit dem gewünschten Pfad.
Mit deinem "Browser" mit der tollen Textbox setzt du den Reg-Key mit dem gewünschten Pfad.
Zitat von @99045:
So schwierig kann das doch nicht sein. Du überprüfst mit deinem "SystemWatcher" per Timer, ob ein bestimmter
Registry-Key gesetzt ist oder sich geändert hat und verwendest den.
Mit deinem "Browser" mit der tollen Textbox setzt du den Reg-Key mit dem gewünschten Pfad.
Sorry, aber das hilft ihm doch auch nicht. Ob er jetzt den Wert auch einer Textbox oder der Registry ausliest ist doch sowas von egal. Und das mit dem Timer halte ich auch für absolut unnötig, für soetwas gibt's doch genug andere EventsSo schwierig kann das doch nicht sein. Du überprüfst mit deinem "SystemWatcher" per Timer, ob ein bestimmter
Registry-Key gesetzt ist oder sich geändert hat und verwendest den.
Mit deinem "Browser" mit der tollen Textbox setzt du den Reg-Key mit dem gewünschten Pfad.
Was ich für nötig halte, überlasse bitte mir und welche Tipps ich gebe, bitte auch..
PS. Zitierst du in einer Briefantwort auch den gesamten Text, des Schreibers in deiner Antwort?
PS. Zitierst du in einer Briefantwort auch den gesamten Text, des Schreibers in deiner Antwort?
Zitat von @99045:
Was ich für nötig halte, überlasse bitte mir und welche Tipps ich gebe, bitte auch..
Überlasse ich dir auch, wollt dich nur drauf aufmerksam machen das es ein Schmarrn ist der auch nicht's bringt.Was ich für nötig halte, überlasse bitte mir und welche Tipps ich gebe, bitte auch..
PS. Zitierst du in einer Briefantwort auch den gesamten Text, des Schreibers in deiner Antwort?
Wenn ich zu faul bin den Text zu löschen, JA.
Allen ist das Denken erlaubt. Vielen bleibt es erspart. (Curt Goetz)
EOD
EOD
Hi,
ich glaube das Problem ist, dass du den Path vom Filewatcher im Changed event änderst.
Wo du bei dem Button schon das Click-event abfängst ist es sicherlich sinnvoll dort die Änderung nach der Auswahl des Ordners zu machen.
Ich habe mal einen funktionierenden Prototypen entwickelt, da ich Flagfiles zum Eventauslösen benutzt habe. Falls du möchtest kann ich dir dazu mehr Infos zukommen lassen.
Aber vorerst tippe ich darauf, dass du den Path des Filewatchers nicht im richtigen Kontext setzt.
Auszüge aus meiner Lösung:
Ich öffne je nachdem, ob ich einen ganzen Ordner oder nur eine Datei "beobachten" will ein anderes Auswahlfenster. Die Auswahl wird über die RadioButtons getroffen.
Meine Load-Methode der Form sieht übrigends so aus (erst nach Auswahl eines Ordners/einer Datei wird der Filewatcher eingeschaltet!):
Ich hoffe, dass dir das auch zwei Monate nach Erstellen deines Posts noch irgendwie helfen kann
Grüße
"Jenna"
ich glaube das Problem ist, dass du den Path vom Filewatcher im Changed event änderst.
Wo du bei dem Button schon das Click-event abfängst ist es sicherlich sinnvoll dort die Änderung nach der Auswahl des Ordners zu machen.
Ich habe mal einen funktionierenden Prototypen entwickelt, da ich Flagfiles zum Eventauslösen benutzt habe. Falls du möchtest kann ich dir dazu mehr Infos zukommen lassen.
Aber vorerst tippe ich darauf, dass du den Path des Filewatchers nicht im richtigen Kontext setzt.
Auszüge aus meiner Lösung:
private void button_openPath_Click(object sender, EventArgs e)
{
String selectedPath = string.Empty;
String selectedFile = string.Empty;
if (radioButton_folder.Checked)
{
folderBrowserDialog1.ShowDialog();
selectedPath = folderBrowserDialog1.SelectedPath;
}
else
{
openFileDialog1.ShowDialog();
selectedPath = Path.GetDirectoryName(openFileDialog1.FileName);
selectedFile = Path.GetFileName(openFileDialog1.FileName);
}
if (!Directory.Exists(selectedPath))
{
selectedPath = "C:\\";
}
fileSystemWatcher.IncludeSubdirectories = true;
fileSystemWatcher.Path = selectedPath;
if (!selectedFile.Equals(string.Empty))
{
fileSystemWatcher.Filter = selectedFile;
}
else
{
fileSystemWatcher.Filter = string.Empty;
}
textBox_path.Text = selectedPath + "\\" + selectedFile;
fileSystemWatcher.EnableRaisingEvents = true;
}
Ich öffne je nachdem, ob ich einen ganzen Ordner oder nur eine Datei "beobachten" will ein anderes Auswahlfenster. Die Auswahl wird über die RadioButtons getroffen.
Meine Load-Methode der Form sieht übrigends so aus (erst nach Auswahl eines Ordners/einer Datei wird der Filewatcher eingeschaltet!):
private void Form1_Load(object sender, EventArgs e)
{
openFileDialog1.CheckFileExists = false;
openFileDialog1.CheckPathExists = true;
openFileDialog1.InitialDirectory = _INIT_DIRECTORY;
folderBrowserDialog1.ShowNewFolderButton = true;
folderBrowserDialog1.SelectedPath = _INIT_DIRECTORY;
fileSystemWatcher.Path = "C:\\";
fileSystemWatcher.NotifyFilter = //NotifyFilters.Attributes |
//NotifyFilters.CreationTime |
NotifyFilters.DirectoryName |
NotifyFilters.FileName |
//NotifyFilters.LastAccess |
NotifyFilters.LastWrite //|
//NotifyFilters.Security |
//NotifyFilters.Size
;
fileSystemWatcher.EnableRaisingEvents = false;
}
Ich hoffe, dass dir das auch zwei Monate nach Erstellen deines Posts noch irgendwie helfen kann
Grüße
"Jenna"