C# Vraagje

Vragen die je boven niet kwijt kunt, kan je hier stellen.

Moderator: Moderators

Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Nee dus.. het zat em niet in de niet afdrukbare karakters in het programma waarvandaan je kopieerde. ook als ik stukken code in de applicatie zelf knip of kopieer, en dan plak.. gooit ie alles tegen de kantlijn (tenzij het al indented text was(, alleen de eerste sub heeft een kleurtje,
IF, ENDIF, WHILE en ENDWHILE krijgen wel een kleurtje.. maar indentatie ho maar..

in Visual Studio zit een functie om je code netjes te trekken.. Code Cleanup heet dat..zoiets zou ik hier ook moeten hebben..maar hoe doe ik dat?
hfjbuis
Donateur
Berichten: 3088
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: C# Vraagje

Bericht door hfjbuis »

Arie Kabaalstra schreef: 16 feb 2023 15:41 in Visual Studio zit een functie om je code netjes te trekken.. Code Cleanup heet dat..zoiets zou ik hier ook moeten hebben..maar hoe doe ik dat?
Ik heb daar niet 123 een oplossing voor. Je kunt met regex een hele code ontleden en de stukken met een programma weer samenvoegen.

Code: Selecteer alles

        static String RegExMatchAddress = @"(?<Host>.+?):(?<Port>\d{1,5})";
        public static Match MatchHostIdentifier(String HostIdentifier)
        {
            var Result = Regex.Match(HostIdentifier, RegExMatchAddress);
            return Result;
        }
        public static String Host(String HostIdentifier)
        {
            Match Match = MatchHostIdentifier(HostIdentifier);
            if (Match.Success == true)
                if (Match.Groups["Host"].Success == true)
                    return Match.Groups["Host"].ToString().Trim();
            return "";
        }
Hier een stukje code om de host naam ergens uit te peuteren.
De tekst (?<Host>.+?) stopt het resultaat van de match in de variable Host die met Match.Groups["Host"].ToString().Trim() terug gegeven wordt.
Zo kun je alle regels tussen sub en endsub zoeken en die laten inspringen. NIet echt eenvoudig en je bent zeker niet de eerste die zoiets wil doen. Er zal vast wel een stukje code zijn die dit allemaal doet. Ik heb even gezocht, maar niets gevonden.

Misschien dit: https://marketplace.visualstudio.com/it ... .vscode-st
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Dat lijkt me een beetje omslachtige methode, want dan zou ik mijn programma dubbel moeten schrijven.. Immers... in de FCTB (fastColoredTextBox) wordt standaard bij TextChanged events al de hele reeks aan RegEx doorgelopen.. daarom werkt het prima als je de code in de Editor aan het inkloppen bent.. Maar dus niet als je Plakt... dan pakt ie dus niet alles.. van de Subs alleen de eerste.. van de Endsubs geen een, de IF en ENDIF, alsmede de While en Endwhile pakt ie ook mee.. in die zin dat ie ze een kleurtje geeft.. maar Indentatie doet ie ook niet..

Als ik dan handmatig de code ga wijzigen.. dan springt (bij het gebruik van de juiste toetsen op de juiste regels) Alles op zijn plaats.. zelfs al zou ik alleen maar elke regel Space en Backspace intikken, maar dat is iets wat ik ook nog niet automagisch kan laten doen als ik een stukje Code erin plak...
Het afvangen van een Ctrl-V is niet zo moeilijk..

Code: Selecteer alles

private void fastColoredTextBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode == Keys.V)
            {
                //shuffle();
            }
        }
Maar de Sub waarin de Tekst even nagekeken op Regex, die kan ik hiervandaan niet aanroepen..

Code: Selecteer alles

private void fastColoredTextBox1_TextChanged(object sender, TextChangedEventArgs e)
        {
            //ClearStyles
            e.ChangedRange.ClearStyle(BoldBlue);
            e.ChangedRange.ClearFoldingMarkers();
            //SetStyles

            e.ChangedRange.SetStyle(BoldBlue, Subs);
            e.ChangedRange.SetStyle(BoldBlue, GCodes);
            e.ChangedRange.SetStyle(BoldRed, Loops);
            e.ChangedRange.SetFoldingMarkers(Startfold.ToString(), Endfold.ToString());
        }
Ten eerste omdat ie Private is.. maar zelfs als ik em Public zet.. of er helemaal niets voorzet.. dus gewoon

Code: Selecteer alles

void fastColoredTextBox1_TextChanged(object sender, TextChangedEventArgs e)
Dan kan ik em vanuit die KeyUp sub nog steeds niet aanroepen, laat staan vanuit een andere sub.

Ik had vanmorgen al iets geprobeerd om bij het plakken van een Lap tekst de boel regel voor regel te kopieren naar een verborgen textboxje, het hoofdvenster leeg te gooien, en dan de boel terug te zetten.. maar dat werkt dus niet zo.. (Ik ben nog maar een beginner.. ik probeer ook maar wat :roll: )
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12050
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: C# Vraagje

Bericht door hugo stoutjesdijk »

Misschien te simpel gedacht, maar die tekst staat in een tekstbox denk ik, je zou toch een refresh (ik zou F5 nemen) button kunnen maken en dan even alle regels van die tekstbox door die RegEx halen en vervolgens weer terugschrijven.
(maar ik wordt niet gehinderd door enige kennis van zaken wat beterft dat hele RegEx truucje)
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Daar had ik ook al aan zitten denken.. als je dat als een gewone Public Void kan schrijven.. dan kun je em ook automagisch aanroepen na Ctrl-V.. da's niet zo spannend.. je hoeft daar maar een keyUp Event voor aan te maken om die af te vangen, en dan te verwijzen naar van alles en nog wat..tot het tonen van Messageboxen aan toe..(Gooi ik er wel eens in om te kijken wat een bepaalde variabele doet, of om een Haltepunt in de software te gooien..)

Maar die Regex.. da's het probleem niet.. die zijn Public.. die kan ik overal aanroepen.. maar het verhaal :

Code: Selecteer alles

public void fastColoredTextBox1_TextChanged(object sender, TextChangedEventArgs e)
        {
            //ClearStyles
            e.ChangedRange.ClearStyle(BoldBlue, BoldRed);
            e.ChangedRange.ClearFoldingMarkers();
            //SetStyles
            e.ChangedRange.SetStyle(BoldBlue, Subs);
            e.ChangedRange.SetStyle(BoldBlue, GCodes);
            e.ChangedRange.SetStyle(BoldRed, Loops);
            e.ChangedRange.SetFoldingMarkers(Startfold.ToString(), Endfold.ToString());
        }
De inhoud van die void kan ik niet zomaar in een andere void plakken.. en deze kan ik ook niet zomaar aanroepen.. omdat er blijkbaar een TextChangedEventArg moet zijn.. ofzo..
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Ik ben er voor een deel uit... Stom dat ik daar niet eerder aan gedacht heb..

Code: Selecteer alles

public partial class Form1 : Form
    {
        //public Regex Subs = new Regex(@"\A\s*?(SUB|ENDSUB)?");
        //public Regex Subs = new Regex(@"\bSUB|ENDSUB\b");
        public Regex GCodes = new Regex(@"G\d{1,3}(\.\d{1,2})?");
        public Regex Loops = new Regex(@"IF|ELSE|ENDIF|WHILE|ENDWHILE");
        
        TextStyle BoldBlue = new TextStyle(Brushes.Blue, null, FontStyle.Bold);
        TextStyle BoldRed = new TextStyle(Brushes.Red, null, FontStyle.Bold);
        TextStyle BoldGreen = new TextStyle(Brushes.Green, null, FontStyle.Bold);
        public Regex Startfold = new Regex(@"\bSUB\b");
        public Regex Endfold = new Regex(@"\bENDSUB\b");
        public Regex StartRegion = new Regex(@"\;\bREGION.*\b");
        public Regex EndRegion = new Regex(@"\;\bENDREGION\b");
Zoals te zien.. de bovenste 2 regels zijn Commented.. waarom?.. waarom zou ik 2 textstyles aanmaken, één om iets een kleur te geven, en één om ze op te vouwen?...

als je een Sub op wilt kunnen vouwen.. dan volstaat het om daar een Regex Startfold en een Regex Endfold voor te maken, maar dan dat is er niet nodig.

Code: Selecteer alles

public void fastColoredTextBox1_TextChanged(object sender, TextChangedEventArgs e)
        {
            //ClearStyles
            e.ChangedRange.ClearStyle(BoldBlue, BoldRed, BoldGreen);
            e.ChangedRange.ClearFoldingMarkers();
            //SetStyles
            e.ChangedRange.SetStyle(BoldBlue, Startfold);
            e.ChangedRange.SetStyle(BoldBlue, Endfold);
            e.ChangedRange.SetStyle(BoldBlue, GCodes);
            e.ChangedRange.SetStyle(BoldRed, Loops);
            e.ChangedRange.SetStyle(BoldGreen, StartRegion);
            e.ChangedRange.SetStyle(BoldGreen, EndRegion);
            //SetFoldingMarkers
            e.ChangedRange.SetFoldingMarkers(Startfold.ToString(), Endfold.ToString());
            e.ChangedRange.SetFoldingMarkers(StartRegion.ToString(), EndRegion.ToString());
        }
en dan pas je de Textstyles toe op de Regex Masks, die je eerder gedeclareerd hebt.. , Ik kan ze dus met SetStyle al een kleurtje geven.. daar kan ik gewoon de eerder gedeclareerde Regex voor gebruiken.. en dan pas ik ook de FoldingMarkers toe.. klaar.. is het nou zo simpel?.. Eh.. Ja.. het is zo simpel.. en ik dacht gewoon te ingewikkeld..

Het enige is nu nog dat als ik tekst plak, dat als het in het bronprogramma allemaal tegen de kantlijn stond, dat ook zo is in mijn Applicatie, maar dat alle SyntaxMarkeringen nu wel goed zijn.. (Ok.. ik moet de RegEx voor SUB nog een haartje aanpassen.. maar ik heb nu ook dat boekje van O'Reilly binnen...)

Afbeelding

't is dat als ik het handmatig moet doen, ik elke regel een Space en een Backspace moet geven aan het einde, ik heb het al programmagewijs geprobeerd door de hele zwik in een Textbox te mieteren, en ze regel voor regel te plakken.. dat werkt nie..Ik ga nog even spitten..
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

weer wat geleerd.. Ik ben eerst maar eens via dialoogjes bestanden binnen gaan halen, en weg gaan schrijven.. tot ik me bedacht.. Wacht even.. als je het programma opstart.. zou je dan niet gewoon automagisch het laatst geopende bestand weergeven??.. dat doet NotePad++ tenslotte ook. Dus.. Tekstbestandje gemaakt, en daar de naam, en het hele pad ernaartoe in gemieterd..
Toen nog even een Form_Closed Event aangemaakt.. en daarin wordt het bestand weggeschreven..dus.. autosave on Exit.. maar da's nog niet alles.. wat nou als ik een contour aan het schrijven ben, en ik laadt em in EdingCNC?..Ja.. Ook dan.. als het form de Focus verliest. slaat ie de boel op., dus, wijziging in het programma, even kijken in EdingCNC, en Hopsa.. instant resultaat.. Da's mooi.. nu nog even zien hoe ik Dialogen aan kan maken..

Inmiddels ben ik al zover dat ik het pad naar de DialogPictures in een bestandje heb staan.. zodat dezelfde plaatjes als in EdingCNC zitten gebruikt kunnen worden.. Nu moet ik alleen nog verzinnen.. hoe maak IK mijn dialogen... Ik zou ze met veel gedoe, aan de hand van de bewerkingsnaam (is afbeeldingsnaam) kunnen peuteren uit de MacroFile van EdingCNC.. maar dan kom ik aan een soortgelijke dialoog.. met alleen maar textboxjes waar je nummerieke waarden in kan gooien.. wat te denken van een Selectievakje?.. dat je bij een bewerking aan kan vinken, of met een Radiobutton dat je bijvoorbeeld wilt voordraaien, of dat je tekst in kan voeren, om een ander commentaar bij de Cyclus te geven?.. het zijn maar wat ideetjes... en ik ben nog een beginner in c#, maar Leren is leuk.. anders was ik wel dom gebleven..
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Iemand maakte pas de opmerking dat ik na mijn ongeval gelukkig nog bij mijn volle verstand was..

Nou... Ik kan je zeggen.. mijn verstand is nog lang niet vol... daarom ben ik nog aan het leren....

en.. gisteren ontdekt dat:

Code: Selecteer alles

 private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Up && e.Modifiers == Keys.Control)
            {
                fastColoredTextBox1.CollapseAllFoldingBlocks();
            }
            if (e.KeyCode == Keys.Down && e.Modifiers == Keys.Control)
            {
                fastColoredTextBox1.ExpandAllFoldingBlocks();
            }
        }
Dit bij Ctrl UP alle Code netjes samenvouwt en bij Ctrl Down de boel weer netjes openvouwt.. wel zo fijn.. nu nog iets verzinnen dat ten opzichte van een geselecteerde lijn de FoldingMarkers opzoekt, en alleen dat deel open of dicht vouwt..

we blijven leren
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

De afgelopen dagen aardig bezig geweest met programmeren, en stukje bij beetje komen er nieuwe inzichten bovendrijven..

Namelijk!.. als je in EdingCNC gebruik maakt van een UIO-10, dan werkt ie ALTIJD, of EdingCNC nou op de voorgrond staat, of dat er een 'kweet niet hoeveel andere applicaties bovenop liggen.. zodra je een toets bedient.. dan krijgt EdingCNC de Focus...

en da's leuk.. want.. stel.. je bent een programma aan het schrijven, en je wilt daar een rijtje parameters in opnemen die je middels een Dialoogje in EdingCNC programmeert.. die dialoog zet je onder een knop, je drukt die knop in, en de dialoog verschijnt..
als je dan in die texteditor het bestandje dat door EdingCNC is gegenereerd opent, kun je em zo kopiëren... en da's natuurlijk leuk!

Helemaal leuk zou het worden als je middels je macro een reeks parameters kan programmeren, om die vervolgens "automagisch" in te kunnen voegen in het programma dat je aan het schrijven bent...

Maar daartoe moet je Editor dat bestandje ook automagisch kunnen openen... en openen is het probleem niet zo..
System.IO.File.ReadAllText(fullPath);
this.Text = System.IO.File.ReadAllText(fullPath);
if (this.Text != "")
{
fastColoredTextBox1.Text = System.IO.File.ReadAllText(this.Text);
}
Dat doet 't em wel..
maar... eigenlijk wil ik het volgende:, zodra ik een bepaald bestandje aanmaak met mijn Macro, middels logmsg, dan moet mijn Editor em eigenlijk automagisch laden, laten we zeggen de inhoudt van dat bestandje "opzuigen" en in een Textstring gooien..

nou is dat ook niet zo heel spannend, want..
int StartInsert = textBox2.Text.IndexOf(";cycle");
int EndInsert = textBox2.Text.IndexOf("endcycle") + 8 - StartInsert;
var InsertCycle = textBox2.Text.Substring(StartInsert, EndInsert);
textBox2.Clear();
fastColoredTextBox1.InsertText(InsertCycle);
InsertCycle = "";
Ik mep die code eerst maar even in een Textbox, want daarin is het makkelijker zoeken dan in een fastColoredTextBox, en alles wat in een textbox zit, is toch een string, makkelijk zat om daar wat uit te peuteren. zeker als de code door een ander stuk software wordt aangeleverd, en er dus geen vauten in zullen zitten..

Maar nu..Eigenlijk wil ik graag dat als ik vanuit EdingCNC middels de Macro en Logmsg een bestandje aanmaak, dat mijn Editor automagisch wakker wordt..

Hoe doe ik dat.. Middels een Timer?.. dat heb ik in het verleden namelijk wel eens gebruikt om te kijken naar een gewijzigde parameter in EdingCNC, maar dat was met een C# CNCAPI, die inmiddels niet meer op het Internet te vinden is.. Lijkt me derhalve ook niet handig om die DLL nog te gebruiken, als de ondersteuning blijkbaar zo betrouwbaar is als een goedkope Chinese machine .

Maar goed.. een Timer dus.. is dat de goede insteek?, om bijvoorbeeld elke halve seconde te kijken of dat bestandje gewijzigd is?.., en kan ik daarmee mijn Editor weer naar de voorgrond krijgen?
MeMoRy
Berichten: 737
Lid geworden op: 17 okt 2022 09:40
Locatie: Utrecht

Re: C# Vraagje

Bericht door MeMoRy »

Je hebt een filesystemwatcher die triggered wanneer er dus iets veranderd in een directory. Zoek je zoiets? Lijkt iets slimmer dan "pollen" met een timer. Al zou dat ook gewoon werken.
hfjbuis
Donateur
Berichten: 3088
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: C# Vraagje

Bericht door hfjbuis »

MeMoRy schreef: 25 feb 2023 15:40 Je hebt een filesystemwatcher die triggered wanneer er dus iets veranderd in een directory.
Dat is wel de manier om het te doen. Vervolgens moet de C# applicatie de focus krijgen, misschien zo? https://stackoverflow.com/questions/374 ... pplication
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

een FileSysetemWatcher lijkt mij ook de mooiste optie... echter......

Ik heb een snippet code gevonden die zou moeten werken.. maar hij doet het niet... en waarom niet?.. geen idee..

Dit is wat ik heb gevonden, ik heb een aantal gebeurtenissen van die File achter // gezet, omdat ik die niet gebruik. Changed is wel de enige, omdat de gezochte file er altijd is.. omdat ie door de EdingCNC Macro wordt aangemaakt.., en indien de gebruiker een bepaalde groep subroutines in die macro aanroept, dan wordt h :lol: et bestandje gewijzigd.. meer dan dat is het niet, was het niet, zal het nooit worden..
Ik kan altijd nog met een if FileExists controle kijken of het bestandje werkelijk bestaat.. ,en zo niet de gebruiker een messagebox met een bedreiging om zijn testikels aan elkaar te klinken tonen..
Ik heb in mijn werkdirectory een bestandje staan genaamt Cycle.tmp, daarin staat het pad C:\CNC4.03\teach_in.nc
Die wordt bij het opstarten van mijn programma gelezen, en de inhoud wordt in de string Cycle gepropt.. (heb ik gechecked, ik strooi er dan gewoon een messagebox in, die me bij het opstarten al toont wat die string is.

een en ander wordt dan (als het goed is) door onderstaande code verwerkt.

Code: Selecteer alles

public void CreateFileWatcher(string Cycle)
        {
            // Create a new FileSystemWatcher and set its properties.
            FileSystemWatcher Watcher = new FileSystemWatcher();
            Watcher.Path = Cycle;
            /* Watch for changes in LastAccess and LastWrite times, and 
               the renaming of files or directories. */
            Watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite;
           // | NotifyFilters.LastWrite
               //| NotifyFilters.FileName | NotifyFilters.DirectoryName
            // Only watch NC files.
            Watcher.Filter = "*.nc";

            // Add event handlers.
            Watcher.Changed += new FileSystemEventHandler(OnChanged);
            //watcher.Created += new FileSystemEventHandler(OnChanged);
            //watcher.Deleted += new FileSystemEventHandler(OnChanged);
            //watcher.Renamed += new RenamedEventHandler(OnChanged);

            // Begin watching.
            Watcher.EnableRaisingEvents = true;
        }
Maar... die code... zoals gezegd... werkt dus niet.. en waarom niet?.. er zijn een aantal "smoking guns"
// Add event handlers.
Watcher.Changed += new FileSystemEventHandler(OnChanged);
Compiler error CS0103

en
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is changed, created, or deleted.
MessageBox.Show("JaY! Something Happened");
}
Compiler error CS0116

het zit em "ergens" in het event OnChanged.. maar hoe en waar?.. ik heb geen idee.. Weet iemand raad?..

de vorige "oplossing" die ik had bedacht, was het automagisch herladen van de File Teach_in.nc, maar dat had tot gevolg dat de Editor elke keer als ie de Focus kreeg meteen die file in je NC bestand gooide... en dat is nou net niet de bedoeling..
wat ik wil bereiken is dat zodra ik met EdingCNC een wijziging maak in teach_in.nc, dat de Editor automagisch naar de voorgrond komt.. en dat ik dan kan kiezen waar ik de inhoud in mijn NC bestandje smijt..middels een Functietoets ofzo, of.. dat ik voor het invullen van een dialoog in EdingCNC mijn Cursor al op de gewenste regel zet, en dat ie em dan automagisch erin plakt..
hfjbuis
Donateur
Berichten: 3088
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: C# Vraagje

Bericht door hfjbuis »

Arie,
Arie Kabaalstra schreef: 26 feb 2023 14:05 Compiler error CS0116
Je mode deze code wel binnen een class gebruiken.
In diezelfde class moet ook de file watcher code staan.
Arie Kabaalstra schreef: 26 feb 2023 14:05 Compiler error CS0103
Ik denk dat dit probleem door bovenstaand probleem veroorzaakt wordt omdat die de handler niet kan compileren, kan hij hem ook niet toevoegen aan de file watcher.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

die Errors.. Mea Culpa, waren het gevolg van het feit dat ik (stom maar waar..) het onderste stuk niet tussen de juiste accolades had staan.. het gebeurt me nog een enkele keer dat ik perongeluk een accolade wegpoets, omdat ik Delete gebruik, in plaats van backspace, die zitten op mijn Laptop te dicht bij elkaar...

Dat is dus inmiddels opgelost.. maar hij geeft nog altijd geen sjoege..
Je mode deze code wel binnen een class gebruiken.
In diezelfde class moet ook de file watcher code staan.
Binnen een Class.. maar eh.. de Filewatcher en de EventHandler staan in hetzelfde Form, dus in dezelfde Class.. toch??
Plaats reactie