Eleu Geschrieben 23. März 2018 Autor Teilen Geschrieben 23. März 2018 vor 5 Stunden schrieb r4phi: @Eleu Damit das ganze funktioniert musst du natürlich deine Program.cs anpassen und eine Instanz des Wrappers an deine Form übergeben: Application.Run(new Form1(new FileSystemWatcherWrapper(@"C:\temp"))); Vielen Dank r4phi, es funktioniert soweit. Für dich ganz natürlich, aber mich wundert es schon, dass nun diese Instanz über die Klasse Program der Form übergeben wird. vor 5 Stunden schrieb Whiz-zarD: Auch unsere Fragen, was du da eigentlich vor hast, kannst du auch nicht mal beantworten. Wir haben vor Jahren ein Programm gekauft. Dieses Programm wertet Daten von einem übergeordnetem System aus und leitet diese Daten an eine Steuerung weiter. Anders gesagt, das übergeordnete System erzeugt Textdateien, die in einem gemappten Laufwerk abgelegt werden. Immer wenn eine neue Textdatei erzeugt wird, wird diese in einer Listbox der Anwendung (FileSystemWatcher) angezeigt. Nun kann man in der ListBox eine Datei selektieren und wenn man das macht, werden die Daten aus der Textdatei ausgelesen und in TextBoxen angezeigt(StringKlasse). Über eine Schaltfläche, kann man die selektierte Datei in der ListBox auch löschen Ich habe mir als Übung vorgenommen, diese Programmfunktionen mit C_Sharp nachzustellen und was ich bis jetzt beschrieben habe, konnte ich soweit auch umsetzen. Das ich so auf der Klassenprogrammierung rumreite, hat damit zu tun, dass du mir in einem vorherigen Thread geraten hast,die meisten Funktionen nicht in der Form zu programmieren, sondern nach Möglichkeit dieses in Klassen auszulagern. Am LAN sind auch Scanner angeschlossen, die als Server konfiguriert sind und ihre Leseergebnisse ins LAN versenden. Eine weitere Aufgabe wird nun sein, über die Anwendung eine Socket Verbindung aufzubauen, diese Daten zu empfangen und mit Sollwerten aus der Textdatei zu vergleichen. Bei Ungleichheit soll ein Signal an eine Steuerung gesendet werden. Aber es ist halt nur eine Übung.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maestro impostor Geschrieben 23. März 2018 Teilen Geschrieben 23. März 2018 vor 3 Minuten schrieb Eleu: Für dich ganz natürlich, aber mich wundert es schon, dass nun diese Instanz über die Klasse Program der Form übergeben wird. Inwiefern oder warum wundert es dich? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eleu Geschrieben 23. März 2018 Autor Teilen Geschrieben 23. März 2018 vor 1 Minute schrieb r4phi: Inwiefern oder warum wundert es dich? Weil Klassen, die von sich aus ein Event liefern entweder im Program oder in der Form bei InitializeComponent() erstellt werden, oder täusch das und das ist das gar nicht so und man könnte auch eine Instanz direkt in der Form erzeugen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maestro impostor Geschrieben 23. März 2018 Teilen Geschrieben 23. März 2018 (bearbeitet) Du kannst das ganze auch in der Form initialisieren. Du kannst auch den Code aus InitializeConponent() ausschneiden und in den Constructor deiner Form packen. Funktioniert auch ohne Probleme Du kannst auch anstatt über den Form Constructor den FileSystemWatcherWrapper über eine Property in der Form injecten. Der Wrapper selbst hat doch schließlich auch ein Event „somethingHappend“ der die Events vom FileSystemWatcher kapselt Bearbeitet 23. März 2018 von r4phi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eleu Geschrieben 23. März 2018 Autor Teilen Geschrieben 23. März 2018 vor 2 Minuten schrieb r4phi: Du kannst das ganze auch in der Form initialisieren. Du kannst auch den Code aus InitializeConponent() ausschneiden und in den Constructor deiner Form packen. O.k. dann hab ich da wohl etwas falsch verstanden.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maestro impostor Geschrieben 23. März 2018 Teilen Geschrieben 23. März 2018 vor 1 Minute schrieb Eleu: O.k. dann hab ich da wohl etwas falsch verstanden.. Prinzipiell kannst du alles machen. Alles auch in einer Datei. Ob das dann aber sinnvoll ist und zielführend ist eine andere Sache. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maestro impostor Geschrieben 23. März 2018 Teilen Geschrieben 23. März 2018 vor 10 Minuten schrieb Eleu: Weil Klassen, die von sich aus ein Event liefern entweder im Program oder in der Form bei InitializeComponent() erstellt werden, oder täusch das und das ist das gar nicht so und man könnte auch eine Instanz direkt in der Form erzeugen? Hier sei einfach noch mal das gesagt was schon gesagt wurde: Erst mit ConsoleApplication und ClassLibary arbeiten. Dann ist das alles einfacher zu verstehen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eleu Geschrieben 24. März 2018 Autor Teilen Geschrieben 24. März 2018 (bearbeitet) vor 18 Stunden schrieb r4phi: Du kannst das ganze auch in der Form initialisieren. Du kannst auch den Code aus InitializeConponent() ausschneiden und in den Constructor deiner Form packen. Funktioniert auch ohne Probleme Ich habe das mal probiert und du hast recht, es muss nur einmal initialisiert werden und nicht zyklisch. private void Form1_Load(object sender, EventArgs e) { Watcher(); } private void Watcher() { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Changed += (sender, e) => textBox1.Text = "Test"; watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; watcher.Filter = "*.txt"; watcher.Path = "C:\\C_Sharp"; watcher.SynchronizingObject = this; watcher.EnableRaisingEvents = true; watcher.IncludeSubdirectories = false; } Warum braucht man InitializeConponent() eigentlich? Man kann das doch auch in der Form load machen? Es ist ein eigener Thread. Hatte Whiz-zarD ja schon erklärt...aber wozu ist das gut? Bearbeitet 24. März 2018 von Eleu Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maestro impostor Geschrieben 24. März 2018 Teilen Geschrieben 24. März 2018 Oooooooooooh... warum arbeitest du nicht einfach zuerst mit einer ConsoleApplication und einer ClassLibary? Ja. Die Form läuft in einem anderen Thread... Ich verstehe auch nicht warum man es dir zeigt wie man es eigentlich macht und dann wieder so ein rotz dabei rauskommt. Erst willst du das alles in einer eigenen Klasse.. jetzt im Form Load. Ich verstehe immer noch nicht warum wieso weshalb du die Sachen machst die du machst. vor 10 Minuten schrieb Eleu: Es ist ein eigener Thread. Hatte Whiz-zarD ja schon erklärt...aber wozu ist das gut? Nimm endlich dein Buch in die Hand und lies. Hier... so funktioniert dein Code... public partial class Form1 : Form { public Form1() { InitializeComponent(); this.Load += Form1_Load; } private void Form1_Load(object sender, EventArgs e) { Watcher(); } private void Watcher() { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Changed += (sender, e) => IchBinEinNoob(); watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; watcher.Filter = "*.txt"; watcher.Path = "C:\\Temp"; watcher.SynchronizingObject = this; watcher.EnableRaisingEvents = true; watcher.IncludeSubdirectories = false; } private void IchBinEinNoob() { string text = "blabla"; if (textBox1.InvokeRequired) { textBox1.Invoke((MethodInvoker) delegate { textBox1.Text = text; }); } else { textBox1.Text = text; } } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eleu Geschrieben 24. März 2018 Autor Teilen Geschrieben 24. März 2018 Am Besten schließt ihr das Forum, dann kann euch auch kein Noob mehr auf die Nerven gehen.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maestro impostor Geschrieben 24. März 2018 Teilen Geschrieben 24. März 2018 vor 40 Minuten schrieb Eleu: Am Besten schließt ihr das Forum, dann kann euch auch kein Noob mehr auf die Nerven gehen.. Hättest du die Fehlermeldung gegoogelt hättest du dir die Antwort selbst liefern können. Man hilft gerne, aber hier ist 0 Eigeninitiative und Interesse zu entdecken. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eleu Geschrieben 24. März 2018 Autor Teilen Geschrieben 24. März 2018 vor 18 Minuten schrieb r4phi: Hättest du die Fehlermeldung gegoogelt hättest du dir die Antwort selbst liefern können. Man hilft gerne, aber hier ist 0 Eigeninitiative und Interesse zu entdecken. Letzten Endes kann man jede Frage mit einem Link abtun. Hast du dich schon mal gefragt, warum in den fachlichen Foren so wenig los ist? Vielleicht liegt es ja daran, dass junge Anfänger sich nicht mehr trauen zu fragen und warum das so ist, das frag dich mal lieber selber... Ich höre jetzt auch auf hier noch weiter Fragen zu stellen, denn es macht echt keinen Spaß hier. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
KeeperOfCoffee Geschrieben 24. März 2018 Teilen Geschrieben 24. März 2018 vor 2 Stunden schrieb Eleu: Am Besten schließt ihr das Forum, dann kann euch auch kein Noob mehr auf die Nerven gehen.. Die Reaktionen hier sind leider verständlich. Erst schreibst du, dass du früher mal programmiert hast. Dann merkt man aber, dass dir so einiges fehlt. Man stellt dir Fragen, die du anfangst nicht beantwortest (willst?) sondern erst auf drängen. Du willst etwas ausprobieren => funktioniert nicht => stellst Fragen und willst / bekommst eine Lösung. Und dann probierst du etwas anderes aus. SO kannst du nichts lernen, da steckt doch kein Konzept dahinter. Nichts gegen Learning by Doing, aber so wird das doch nichts. Nimm dein Buch + https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/ + https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/ und lern es einmal richtig. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 24. März 2018 Teilen Geschrieben 24. März 2018 vor 50 Minuten schrieb Eleu: Hast du dich schon mal gefragt, warum in den fachlichen Foren so wenig los ist? Vielleicht liegt es ja daran, dass junge Anfänger sich nicht mehr trauen zu fragen und warum das so ist, das frag dich mal lieber selber... Oder weil sie den Ehrgeiz besitzen, die Fragen selbstzuklären. Du selbst hast auch eine enorm hohe Erwartungshaltung gegenüber das Forum. Wir werden hier nicht bezahlt, um dir zu helfen. Dies passiert hier alles freiwillig. Wir sind nicht dazu verpflichtet, dir zu helfen und wenn ich jemanden helfe, dann möchte ich auch sehen, dass der Hilfesuchende mitarbeitet und versucht zu verstehen, was ihm erklärt wird. Du schreibst selbst, dass du ein Buch besitzt aber es liest sich hier so, als hättest du nicht mal ein Blick hineingeworfen und die ganze Diskussion dreht sich im Kreis. Da vergeht halt einen die Lust weiterhin zu helfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eleu Geschrieben 24. März 2018 Autor Teilen Geschrieben 24. März 2018 vor einer Stunde schrieb KeeperOfCoffee: Du willst etwas ausprobieren => funktioniert nicht => stellst Fragen und willst / bekommst eine Lösung. Und dann probierst du etwas anderes aus. SO kannst du nichts lernen, da steckt doch kein Konzept dahinter. Doch, das funktioniert ganz gut bei mir. vor 59 Minuten schrieb Whiz-zarD: Da vergeht halt einen die Lust weiterhin zu helfen. Das ist doch auch o.k. wenn ich dich mit meiner Fragerei nerve, dann hast du doch neben der Möglichkeit, mich runterzuputzen, oder vielleicht sogar zu beleidigen, auch noch die Option nicht zu antworten, oder? Derjenige, der Lust dazu hat mit mir einen Dialog zu führen, der kann es dann ja machen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.