Frage

-Code unten funktioniert nicht wie erwartet zu erkennen, ob es im Entwurfsmodus (VS.Net 2003 - Control Library) ist:

if (this.Site! = Null && this.Site.DesignMode == true)
{
  // Design-Modus
}
sonst
{
  // Laufzeit
}

Es wird in einer komplexen Benutzersteuerung, die sie aus einer anderen Benutzersteuerung und einschließlich anderen Bedienelemente auf mich verwendet.
Gibt es eine andere Art und Weise Entwurfszeit in einem VS.NET 2003 oder was ist das Problem mit dem obigen Code zu erkennen?

War es hilfreich?

Lösung

DesignMode nicht aus in einem Konstruktor arbeiten. Einige Alternativen (nicht sicher, ob sie in 1.1 arbeiten) sind

if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime)

oder

Aufruf GetService(typeof(IDesignerHost)) und sehen, ob es etwas gibt.

Ich habe mehr Glück mit der ersten Option habe.

Andere Tipps

Ich denke, man HttpContext.Current verwenden könnte == null wie bei http: / /west-wind.com/weblog/posts/189.aspx

In .Net 2.0 gibt es Control.DesignMode ( http://msdn.microsoft.com/en-us/library/system.componentmodel.component.designmode.aspx ) ist der richtige Weg, um zu überprüfen. Obwohl, wenn this.Site.DesignMode nicht richtig funktioniert, Component.DesignMode vielleicht nicht so gut funktionieren, wie es tut genau das Kontroll Sie tun (Seite! = Null && Site.DesignMode).

Dies könnte ein langer Schuss sein, aber sind Sie sicher, dass Ihre Basissteuerung nicht auf die Website Eigenschaft nicht außer Kraft setzen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top