2012-07-09 24 views
5

Nếu bạn có một mẫu hiển thị dữ liệu, có một điều bạn có thể làm là tham khảo this.DesignMode trong constructor để tránh Populating nó trong thiết kế:Có bất kỳ cảnh báo nào để hoán đổi DesignMode cho LicenseManager.UsageMode trong một trình tạo WinForms UserControl không?

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

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

Tuy nhiên, nếu bạn quyết định viết lại rằng hình thức như một UserControl, giữ cùng một logic của hàm tạo, một cái gì đó bất ngờ xảy ra - this.DesignMode luôn luôn là false bất kể cái gì. Điều này dẫn đến nhà thiết kế gọi logic của bạn có nghĩa là xảy ra trong thời gian chạy.

Tôi vừa tìm thấy nhận xét về bài đăng trên blog dường như sửa lỗi này nhưng nó tham chiếu chức năng của lớp LicenseManager như là sự thay thế hoạt động như mong đợi trong UserControl.

Vì vậy, đối với một UserControl tôi có thể làm:

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(); 
     } 
    } 
} 

Không sử dụng các LicenseManager thay vì DesignMode có bất kỳ hãy cẩn thận hoặc hàm ý rằng có thể ngăn cản tôi từ đưa vào mã sản xuất của tôi không?

Trả lời

1

Theo người đã đăng nhận xét trên my answer to another question, sử dụng LicenseManager không hoạt động theo phương thức OnPaint.

+0

Khá mơ hồ. Có vẻ như nó không hoạt động trong «OnPaint' vì" tham chiếu vòng tròn "(Có lẽ 'OnPaint' sẽ không kích hoạt ở vị trí đầu tiên nếu mô hình cấp phép không chính xác?) –

+0

@RobertHarvey Tôi đồng ý, đó là khá mơ hồ. Tôi đã không thử nghiệm nó để không thể xác nhận nó là trường hợp, nhưng bình luận có hai upvotes vì ​​vậy tôi cho rằng ít nhất hai người đã gặp phải hành vi. – adrianbanks

Các vấn đề liên quan