Korte en simpele vraag waar ik met Google echter niet veel nuttigs kon vinden. Met .Enable = true kun je eenvoudig een form disablen. Het resultaat is dat geen enkele control erop - inclusief de form zelf - nog luistert naar input. Een tweede resultaat is dat de hele handel "greyed-out" wordt.
Nu dat laatste wil ik in een specifiek geval niet. Ik wil wel dat de hele form disabled wordt, maar het uiterlijk mag niet veranderd worden. Vergelijk het met wat er gebeurt bij een MessageBox.Show. Ook hier aanvaard de form van waaruit de MessageBox.Show wordt aangeroepen geen enkele invoer meer, maar de form zelf blijft wel uiterlijk onveranderd - dus geen greyed-out controls.
Kan ik dat gedrag nabootsen?
Ik wil het gebruiken om zelf een soort geavanceerde MessageBox in te bouwen in een applicatie. Nu is dat eenvoudig met .ShowDialog op een form uit te voeren, maar... dit "onderbreekt" de hele applicatie en dat is niet de bedoeling.
Korte situatieschets:
FormMain is de hoofdapplicatie. Daarop staat een button die Form1 opent. FormMain blijft ondertussen actief en kan nog steeds invoer aanvaarden. Op Form1 staat een button die FormMessageBox opent. De bedoeling is dat nu Form1 disabled wordt (zolang FormMessageBox open is), maar dat FormMain nog steeds invoer aanvaardt!
Ik heb dat werkende, maar zit met die vervelende grey-out van de disable.
Ik heb wel de indruk dat multithreading een andere (en waarschijnlijk betere) aanpak voor mijn probleem is. Kan iemand bevestigen of wat ik wil doen ook daadwerkelijk mogelijk is met threading vooraleer ik uren en uren tijd daarin steek. En hoe ga ik dan tewerk? Laat ik Form1 in een nieuwe thread starten?
Nu dat laatste wil ik in een specifiek geval niet. Ik wil wel dat de hele form disabled wordt, maar het uiterlijk mag niet veranderd worden. Vergelijk het met wat er gebeurt bij een MessageBox.Show. Ook hier aanvaard de form van waaruit de MessageBox.Show wordt aangeroepen geen enkele invoer meer, maar de form zelf blijft wel uiterlijk onveranderd - dus geen greyed-out controls.
Kan ik dat gedrag nabootsen?
Ik wil het gebruiken om zelf een soort geavanceerde MessageBox in te bouwen in een applicatie. Nu is dat eenvoudig met .ShowDialog op een form uit te voeren, maar... dit "onderbreekt" de hele applicatie en dat is niet de bedoeling.
Korte situatieschets:
FormMain is de hoofdapplicatie. Daarop staat een button die Form1 opent. FormMain blijft ondertussen actief en kan nog steeds invoer aanvaarden. Op Form1 staat een button die FormMessageBox opent. De bedoeling is dat nu Form1 disabled wordt (zolang FormMessageBox open is), maar dat FormMain nog steeds invoer aanvaardt!
Ik heb dat werkende, maar zit met die vervelende grey-out van de disable.
Ik heb wel de indruk dat multithreading een andere (en waarschijnlijk betere) aanpak voor mijn probleem is. Kan iemand bevestigen of wat ik wil doen ook daadwerkelijk mogelijk is met threading vooraleer ik uren en uren tijd daarin steek. En hoe ga ik dan tewerk? Laat ik Form1 in een nieuwe thread starten?