SORU
29 AĞUSTOS 2008, Cuma


DesignMode Denetimleri ile

Herkes denetimleri geliştirirken DesignMode sorun için yararlı bir çözüm buldu?

Sorun eğer yuvayı kontrol ediyorsa o zaman DesignMode sadece ilk seviye için çalışıyor. İkinci ve daha düşük seviyeleri DesignMode her zaman FALSE döndürür.

Standart hack "Eğer gerçekten DOĞRU. böylece DesignMode studio olmalı" devenv.exe eğer çalıştığı sürece bakmak ve oldu

ProcessName arıyor ile bu sorunu bir şekilde kullanıcı adı işlem görmek için gerekli haklara sahip olmayabilirsiniz sonuç ile kayıt defteri ve diğer garip parçaları ile çalışır. Ayrıca bu garip yol çok yavaş. Bir singleton kullanmak için ek yığın kesmek zorunda kaldık ve eğer bir hata işlemi için adını sorarken atılır, sonra DesignMode YANLIŞ olduğunu varsayalım.

DesignMode belirlemek için temiz bir şekilde sırada bulunuyor. Acually Microsoft dahili çerçeve düzeltmesi daha iyi olurdu!

CEVAP
2 NİSAN 2009, PERŞEMBE


Bu soru, kaslı, şimdi de olduğu gibi bu işin, 5 farklı yollar izler: . keşfettim

System.ComponentModel.DesignMode property

System.ComponentModel.LicenseManager.UsageMode property

private string ServiceString()
{
    if (GetService(typeof(System.ComponentModel.Design.IDesignerHost)) != null) 
        return "Present";
    else
        return "Not present";
}

public bool IsDesignerHosted
{
    get
    {
        Control ctrl = this;

        while(ctrl != null)
        {
            if((ctrl.Site != null) && ctrl.Site.DesignMode)
                return true;
            ctrl = ctrl.Parent;
        }
        return false;
    }
}
public static bool IsInDesignMode()
{
    return System.Reflection.Assembly.GetExecutingAssembly()
         .Location.Contains("VisualStudio"))
}

Deneyin ve üç çözümleri üzerine asmak teklif almak için, küçük bir test çözümü için projeler hazırladım:

  • TestApp (win uygulama),
  • SubControl (dll)
  • SubSubControl (dll)

Ben o SubControl içinde SubSubControl, TestApp her biri daha sonra gömülü.Form.

Bu ekran görüntüsü çalışırken sonucunu gösterir. Screenshot of running

Bu ekranda Visual Studio açık: Bu form ile sonuç gösterir

Screenshot of not running

Sonuç: bu gibi görünüyoryansıma olmadantek güvenilir olaniçindekurucu LicenseUsage ve güvenilir olan tek kişidirdışarıdakurucu 'İsDesignedHosted (BlueRaja aşağıda)'

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AutoklubZAPRESIC

    AutoklubZAPR

    17 Mayıs 2011
  • BioHunta

    BioHunta

    28 Mayıs 2006
  • Doug Bernards

    Doug Bernard

    7 Kasım 2007