我與自定義屬性的用戶控制,如下所示:用戶控制的定製屬性丟失狀態時用戶控制重建
[DefaultValue(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Description("Gets or sets whether the \"Remove\" button is visible.")]
public bool ShowRemoveButton
{
get
{
return this.removeButton.Visible;
}
set
{
this.removeButton.Visible = value;
}
}
控制包含一個標準按鈕控制。該屬性用於顯示或隱藏按鈕。用戶控件內置在一個單獨的項目組件中。我把它放在一個表單上,我可以設置和取消設置上述屬性,並且一切看起來都可以正常工作。但是,當包含用戶控件的項目被重建時,屬性值會翻轉爲「false」,這不是默認值。
如何防止自定義屬性丟失/改變控件重建時的狀態?
我嘗試了上面,並設置「this.removeButton.Visible =真」在用戶控件的構造函數。最初它似乎保持其狀態。沒有改變的重建不會改變屬性值。但是,當我對用戶控件進行了更改並重新構建時,該屬性又切換爲「false」並變得粗體。這很煩人。 – Elan 2011-04-13 15:01:30
@Elan:然後你的代碼中必須有一些東西在改變它的值。我創建了一些可重用的控件庫和用戶控件,但我從來沒有遇到過這個問題。在代碼中進行搜索以查看是否有任何設置'removeButton.Visible'屬性。它可能隱藏在'* .Designer.cs'文件中,它被自動插入並且看不到它。 – 2011-04-14 05:00:45
用戶控件在構造函數中將屬性設置爲「true」。主窗體的designer.cs是將「ShowRemoveButton」屬性生成爲false的代碼。這是唯一的兩個地方。我在用戶控件的屬性聲明中刪除了[DefaultValue(true)]屬性,希望將主窗體上的屬性設置爲「true」會導致值停滯。然而,當designer.cs類被重新生成並被替換爲「false」時,屬性值「true」會丟失。我無法獲得「真實」的價值。這發生在一些表單設計者更改和重建之後。 – Elan 2011-04-14 16:12:06