Laden...

[gelöst] Ausführung von Code im Usercontrol im Designemodus verhindern?

Erstellt von Ingo79 vor 15 Jahren Letzter Beitrag vor 14 Jahren 2.457 Views
I
Ingo79 Themenstarter:in
79 Beiträge seit 2007
vor 15 Jahren
[gelöst] Ausführung von Code im Usercontrol im Designemodus verhindern?

Mein UserControl greift auf eine DLL zu. Im Debug-Modus ohne Probleme.

Nur bekomme ich eine Exeption im Designer weil er natürlich die DLL und die Datenbank nicht findet.

Deswegen würd ich gern sowas implementieren:


if(!designmodus)
{
Connection.Open();
                Command.ExecuteNonQuery();
Connection.Close();
}

kann mir da jemand einen tipp geben?

Ingo

Software für Selbstständige

(ob das Update von Firebird 2.0 auf Firebird 2.1 mich an den Rand des Wahnsinns bringt?}

I
Ingo79 Themenstarter:in
79 Beiträge seit 2007
vor 15 Jahren

Ups, da war ich wohl sehr nah an der Wahrheit dran 🙂

Das ist die Antwort:

if (!DesignMode)
{
Connection.Open();
Command.ExecuteNonQuery();
Connection.Close();
}                

Software für Selbstständige

(ob das Update von Firebird 2.0 auf Firebird 2.1 mich an den Rand des Wahnsinns bringt?}

2.891 Beiträge seit 2004
vor 15 Jahren

Hallo Ingo,

du hast doch schon fast richtig geraten... Innerhalb eines Controls besteht folgende Möglichkeit:

this.DesignMode

Das klappt aber z.B. im Konstruktor (des Controls) noch nicht; hierfür (oder wenn du nicht in einem Control bist) klappt auch folgende (dirty) Überprüfung:

Application.StartupPath.EndsWith(@"\Common7\IDE")

Gruß
dN!3L

Edit: So spät und doch noch Konflikte beim Antworten auf den Beitrag... 😁

S
489 Beiträge seit 2007
vor 15 Jahren

eine dirty Lösung braucht's hier nicht, dafür gibt's System.ComponentModel.LicenseManager.UsageMode

Gelöschter Account
vor 15 Jahren

kann mir da jemand einen tipp geben?

natürlich kannst du nun die vorschläge hier umsetzen oder aber du kannst es richtig machen.

  1. controls sollen nicht auf datenbanken zugreifen können.
  2. controls sollen nciht mal wissen was eine datenbank ist und das sie überhaupt existiert.
  3. sie sollen schon garnicht aus dem konstruktor auf eine datenbank zugreifen. das ist ganz ganz böse.
  4. datenbankzugriffe gehöre im allgemeinen sowieso in threads, da diese unter umständen recht lange brauchen können und dann kommt: [FAQ] Warum blockiert mein GUI?

tipp: änder deine architektur. mit der jetzigen wirst du auf dauer nciht glücklich.

S
489 Beiträge seit 2007
vor 15 Jahren

Anmerkung:

Das Property DesignMode ist in der 3. Vererbungtiefe immer false - leider.

2.891 Beiträge seit 2004
vor 14 Jahren

Hier mal noch eine Querverlinkung zu ein paar weiteren Gedanken zu DesignMode, Startuppath-Hack und LicenseManager.UsageMode:
Ansicht-Designer soll Code nicht ausführen