Hallo zusammen,
bin hier neu im Forum und eventuell könnte mir vielleicht jemand helfen:
Ich hab eine WinForms Anwendung die mittels
FileSystemWatcher einen Netzwerkordner überwacht.
Grundsätzlich funktioniert es auch soweit.
Nur würde ich gerne die Einträge in der ListBox umdrehen so dass der neueste Eintrag in der Liste immer oben erscheint und der nächste Eintrag dann wieder darüber usw.
Hab schon versucht das mittels
listBox.TopIndex hinzubekommen, bin aber wegen meiner unzureichender Programmierkenntnisse daran gescheitert...
Vielleicht hätte da jemand einen Tipp für mich?
Der
button2 bereitet mir auch Kopfzerbrechen, wenn ich den anklicke um die Überwachung zu stoppen und dann wieder starte sind die neuen Einträge in der
listBox dann doppelt vorhanden, wenn ich nochmal stoppe und starte dann dreifach usw.
Ich vermute dass eventuell durch
FileSystemWatcher fsWatcher = new FileSystemWatcher() jedesmal beim starten eine neue Instanz erstellt wird und das zu den Mehrfacheinträgen führt?
Ich hab schon versucht die Instanz ausserhalb von
button2 zu setzen, hab ich aber auch nicht hinbekommen, könnt ja auch sein dass ich da überhaupt am Holzweg bin?
Falls da jemand Anregungen hätte, wäre das echt spitze!
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214:
| 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; using System.Threading;
namespace FolderMonitor2 { public partial class Form1 : Form { public ListBox listBox; public const String startMonitoring = "Start Monitoring…"; public const String stopMonitoring = "Stop Monitoring…"; public Form1() {
InitializeComponent(); listBox = new ListBox(); listBox.FormattingEnabled = false; listBox.Location = new System.Drawing.Point(5, 5); listBox.Name = "listBox"; listBox.Size = new System.Drawing.Size(500, 50); listBox.TabIndex = 2; listBox.ScrollAlwaysVisible = true; this.Controls.Add(listBox); listBox.Items.Add("List2"); }
private void button1_Click(object sender, EventArgs e) { FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog(); folderBrowserDialog.ShowNewFolderButton = true; DialogResult dialogResult = folderBrowserDialog.ShowDialog(); if (dialogResult == DialogResult.OK) { textBox1.Text = folderBrowserDialog.SelectedPath; Environment.SpecialFolder root = folderBrowserDialog.RootFolder; } }
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { }
private void textBox1_TextChanged(object sender, EventArgs e) {
}
private void button2_Click(object sender, EventArgs e) { FileSystemWatcher fsWatcher = new FileSystemWatcher(); { } switch (button2.Text) { case startMonitoring: if (!textBox1.Text.Equals(String.Empty)) { listBox1.Items.Add("Started FolderMonitor2 Service…"); listBox1.SelectedIndex = listBox1.Items.Count - 1; listBox1.SelectedIndex = -1; string folder_check = textBox1.Text; if (Directory.Exists(folder_check) == false) { MessageBox.Show("Folder doesn't exist"); break;
}
fsWatcher.Path = textBox1.Text; fsWatcher.Filter = (textBox2.Text.Equals(String.Empty)) ? "*.*" : textBox2.Text;
fsWatcher.IncludeSubdirectories = true;
fsWatcher.NotifyFilter = NotifyFilters.Attributes | NotifyFilters.CreationTime | NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Security | NotifyFilters.Size; fsWatcher.EnableRaisingEvents = true;
fsWatcher.Changed += new FileSystemEventHandler(OnChanged); fsWatcher.Created += new FileSystemEventHandler(OnCreated); fsWatcher.Deleted += new FileSystemEventHandler(OnDeleted); fsWatcher.Renamed += new RenamedEventHandler(OnRenamed); fsWatcher.Error += new ErrorEventHandler(OnError); button2.Text = stopMonitoring; textBox1.Enabled = false; textBox2.Enabled = false;
} else { listBox1.Items.Add("Please select folder to monitor…."); }
break; case stopMonitoring: default: fsWatcher.EnableRaisingEvents = false; fsWatcher = null; button2.Text = startMonitoring; textBox1.Enabled = true; textBox2.Enabled = true; listBox1.Items.Add("Stopped FolderMonitor2 Service…"); listBox1.SelectedIndex = listBox1.Items.Count - 1; listBox1.SelectedIndex = -1; break; } }
public void OnCreated(object sender, FileSystemEventArgs e) { this.Invoke((MethodInvoker)delegate { listBox.Items.Add(String.Format(" {0}
|| Date : {1} || Action : {2}", e.Name, DateTime.Now, e.ChangeType)); }); this.Invoke((MethodInvoker)delegate { listBox.SelectedIndex =
listBox.Items.Count - 1 ; }); this.Invoke((MethodInvoker)delegate { listBox.SelectedIndex = -1; });
} public void OnChanged(object sender, FileSystemEventArgs e) { this.Invoke((MethodInvoker)delegate { listBox.Items.Add(String.Format(" {0}
|| Date : {1} || Action : {2}", e.Name, DateTime.Now, e.ChangeType)); }); this.Invoke((MethodInvoker)delegate { listBox.SelectedIndex =
listBox.Items.Count - 1; }); this.Invoke((MethodInvoker)delegate { listBox.SelectedIndex = -1; }); } public void OnRenamed(object sender, RenamedEventArgs e) { this.Invoke((MethodInvoker)delegate { listBox.Items.Add(String.Format(" {0}
|| Date : {1} || Action : {2} to {3}", e.Name, DateTime.Now, e.ChangeType, e.Name));
}); this.Invoke((MethodInvoker)delegate { listBox.SelectedIndex =
listBox.Items.Count - 1; }); this.Invoke((MethodInvoker)delegate { listBox.SelectedIndex = -1; }); } public void OnDeleted(object sender, FileSystemEventArgs e) { this.Invoke((MethodInvoker)delegate { listBox.Items.Add(String.Format(" {0}
|| Date : {1} || Action : {2}", e.Name, DateTime.Now, e.ChangeType)); }); this.Invoke((MethodInvoker)delegate { listBox.SelectedIndex =
listBox.Items.Count - 1; }); this.Invoke((MethodInvoker)delegate { listBox.SelectedIndex = -1; }); } public void OnError(object sender, ErrorEventArgs e) { this.Invoke((MethodInvoker)delegate { listBox.Items.Add(String.Format
("Error : {0}", e.GetException().Message)); }); this.Invoke((MethodInvoker)delegate { listBox.SelectedIndex =
listBox.Items.Count - 1; }); this.Invoke((MethodInvoker)delegate { listBox.SelectedIndex = -1; }); }
private void textBox2_TextChanged(object sender, EventArgs e) { }
} } |
Moderiert von Th69: C#-Tags hinzugefügt
Moderiert von Th69: Beitragsformatierung überarbeitet (überflüssige Zeilenumbrüche entfernt).