Einen Dialog in C#WinForms erzeugen

Für meine CATIA-Apps war ein spezieller CatiaFileDialog erforderlich. Der Sinn besteht darin, die Möglichkeiten der CATIA Interna für den Anwender nutzbar zu machen.

Es stand die Frage im Raum, von welcher Form oder Komponente sollte geerbt werden? Die MSDN gibt da keine recht eindeutige Antwort. Also habe ich der Einfachheit halber mit einer Form begonnen. Aus der Zeit mit Gtk+ wusste ich noch, dass es eine spezielle GtkDialog-Klasse gab. So etwas sollte doch auch in WinForms möglich sein, oder?

Bei der Analyse der OpenFileDialog > FileDialog > CommonDialog Vererbungskette war ich doch geneigt es genauso für CATIA zu tun. OpenCatiaFileDialog > CatiaFileDialog > CommonDialog sollte sich ergeben. Leider konnte ich keine hinreichende Erklärung finden, was denn bitte alles anzupassen ist.

In den MSDN-Dokus steht nur, dass die Methoden Reset() und RunDialog() zu implementieren wären. Hm, was muss da rein? Irgendwie bin ich via Google auf eine Seite mit den Original-Quellen von Microsoft gekommen. Nach ca. einer viertel Stunde war mir klar, CommonDialog wird als Basisklasse für die Win32-Dialoge aus der user32.dll verwendet. In RunDialog sind dann alle Schritte zu definieren, um die Dll-Funktion korrekt zu initialisieren und auszuführen. Also ein Managed-Wrapper um Unmanaged-Code.

Somit bleibt mein Fazit: Dialoge lassen sich auch von einer WinForm ableiten und als Komponente in den VisualStudio-Designer integrieren.