2012-07-09 12 views
5

Jeśli formularz, który wyświetla dane, jedno można zrobić, to odniesienie this.DesignMode w konstruktorze, aby uniknąć wypełniania go do autora:Czy są jakieś zastrzeżenia do zamiany DesignMode na LicenseManager.UsageMode w konstruktorze WinForms UserControl?

public partial class SetupForm : Form 
{ 
    private SetupItemContainer container = new SetupItemContainer(); 

    public SetupForm() 
    { 
     InitializeComponent(); 
     if (!this.DesignMode) 
     { 
      this.bindingSource1.DataSource = this.container; 
      this.Fill(); 
     } 
    } 
} 

Jednakże, jeśli zdecydujesz się ponownie napisać tę formę w postaci UserControl, zachowując tę ​​samą logikę konstruktora, dzieje się coś nieoczekiwanego - this.DesignMode jest zawsze fałszywa bez względu na wszystko. Prowadzi to do tego, że projektant powołuje się na twoją logikę, która ma nastąpić w czasie wykonywania.

Właśnie znalazłem komentarz do posta na blogu, który wydaje się poprawiać to, ale odwołuje się do funkcjonalności klasy LicenseManager jako zamiennik, który działa zgodnie z oczekiwaniami w UserControl.

Tak dla UserControl mogę zrobić:

public partial class AffiliateSetup : UserControl 
{ 
    private AffiliateItemContainer container = new AffiliateItemContainer(); 

    public AffiliateSetup() 
    { 
     InitializeComponent(); 
     if (LicenseManager.UsageMode == LicenseUsageMode.Runtime) 
     { 
      this.bindingSource1.DataSource = this.container; 
      this.Fill(); 
     } 
    } 
} 

Czy używając LicenseManager zamiast DesignMode posiada wszelkie zastrzeżenia lub konsekwencje, które mogłyby odwieść mnie od wprowadzenia w moim kodu produkcji?

Odpowiedz

1

Według osoby, która wysłała komentarz na temat my answer to another question, używanie LicenseManager nie działa w metodzie OnPaint.

+0

To dość mało znane. Brzmi to prawie tak, jakby nie działało w 'OnPaint' z powodu" odwołania cyklicznego "(Być może' OnPaint' nie uruchomi się w pierwszej kolejności, jeśli model licencjonowania nie jest poprawny?) –

+0

@RobertHarvey Zgadzam się, to jest dość niejasne. Nie przetestowałem tego, więc nie mogę potwierdzić, że tak jest, ale komentarz ma dwie awanse, więc zakładam, że przynajmniej dwie osoby napotkały to zachowanie. – adrianbanks

Powiązane problemy