Connection-Dialog von VS 2010 sauber verwenden

DrMueller

Erfahrenes Mitglied
Huhu nochmal,

ein ähnliches Thema, das ich schon hatte, allerdings jetzt etwas weiter. Evtl. kennt sich ja wer damit aus.
Immer noch die selbe Thematik: Damit ein Fach-User einen Connection-String auswählen kann, verwenden wir das selbe Tool, welches auch VS verwendet. Das heisst, wenn man auf auf Database Connections --> New Connection wechselt, erscheint im VS ein Fenster, welches wir auch verwenden.
Der Sourcecode für dieses ist komplett frei. Damit nun allerdings nicht die Standard-Provider etc. geladen werden, verwenden wir die entsprechende Factory dafür, das Laden sieht dann so aus:

Code:
    private void ShowCreateConnectionString(DBDataSource ds)
    {
        var dlg = new DataConnectionDialog();
        FillDataProviders(dlg);

        if (DataConnectionDialog.Show(dlg) == DialogResult.OK)
        {
            ds.ConnectionString = dlg.ConnectionString;
            ds.ProviderName = dlg.SelectedDataProvider.DisplayName;
        }
    }

    private void FillDataProviders(DataConnectionDialog dlg)
    {
        DataTable dtTable = DbProviderFactories.GetFactoryClasses();
        DataSource.AddStandardDataSources(dlg);
        DataSource ds = dlg.DataSources.First(d => d.DisplayName == "<other>");

        dtTable.Rows.Cast<DataRow>()
               .OrderBy(d => d["Name"])
               .ToList()
               .ForEach(
                   d =>
                   ds.Providers.Add(new DataProvider(d["InvariantName"].ToString(), d["Name"].ToString(),
                                                     d["Name"].ToString(), d["Description"].ToString())));
    }

Hier sind jetzt noch die Standard-Datasources dabei, ist aber irrelevant.
Das Problem ist das Fenster, welches erscheint, wenn man beim ersten Schritt auf Weiter klickt. Denn dieses wird dynamisch aufgebaut, je nach dem was ausgewählt wurde. Interessanterweise, ich nehme das Beispiel devArt, erscheint ein sauberes Fenster, wenn über Visual Studio genanntes DevArt ausgewählt wurde. Wenn ich das über meine eigene Application mache, passiert dies nicht.
Daher nehme ich an, dass der VS das irgendwo gespeichert hat. Damit ich das nicht für jede Anwendung neu aufbauen muss, müsste ich ja "nur" die Config-Datei finden, mit welcher der VS dies aufbaut. Allerdings habe ich weder Off- noch Online etwas dazu gefunden, so ist z.B. die standardmässige Connections.XML nicht auffindbar.

Hat jemand eine Idee, wie der VS das regelt? Ich würde ungern das Rad neu erfinden, vor allem da der VS dies schon alles sauber implementiert hat.


Wie immer vielen Dank im Voraus



Müller Matthias
 

DrMueller

Erfahrenes Mitglied
Tjo habe bei MSDN auch mal nachgefragt, tatsächlich müsste man für jedes Teil ein eigenes UserControl machen...
DIe Methedo, wie sie es im VS direkt machen, ist nicht öffentlich verwenderbar und wäre daher rechtlich gesehen problematisch.