簡體   English   中英

Windows窗體UserControl設計時屬性

[英]Windows Form UserControl design time properties

我正在努力與UserControl。 我有一個代表Pager的UserControl,它具有以這種方式公開的Presenter對象屬性:

[Browsable(false)]
[DesignSerializationAttribute(DesignSerializationAttribute.Hidden)]    
public object Presenter { get; set; }

代碼本身可以正常工作,因為我可以將控件拖放到Windows From中,而無需Visual Studio初始化此屬性。 現在,因為在此控件的Load事件中,我調用了Presenter的一種在運行時為null的方法,所以我引入了以下附加代碼:

public override void OnLoad(...)
{
   if (this.DesignMode)
   {
      base.OnLoad(e);
      return;
   }
   presenter.OnViewReady();
}

現在,每次打開包含此UserControl的窗口時,Visual Studio都會修改Windows設計器代碼。 因此,一旦我打開它,VS就會問我是否要保存它……當然,如果我將控件添加到Window中,它不會保留更改。 UserControl Pager問題消失了……我該如何以正確的方式解決呢? 我只是不希望presenter屬性在設計時初始化,因為它是在運行時注入的...

當VS嘗試生成設計器代碼時,您可能會遇到異常。

將VS的第二個副本附加到設計器,打開Break On Exception,然后看看發生了什么。

因此,包含UserControl的Windows窗體的設計器將引發異常:

該錯誤的實例(1)

  1. Infrastructure.BaseModule.MYWindow.Designer.cs行:108列:1隱藏調用堆棧

在System.ComponentModel.Design.S。 System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager管理器,CodeStatement語句)上的.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager管理器,字符串名稱,CodeExpression表達式)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM