Visual Studio在設計時錯誤地調用了我的UserControl的自定義屬性。隱藏來自VS設計人員的WinForm UserControl自定義屬性
我看了很多張貼的關於使用[可瀏覽(假)和[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)屬性,但是這並沒有爲我工作。
要重現此問題,使用Visual Studio,創建一個新的Windows窗體應用程序,則用戶控件添加到您的項目,並且該用戶控件拖到窗體。將公共定製屬性添加到您的用戶控件中,如下所示。
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool AreYouThere
{
get
{
MessageBox.Show("Yes I Am Here!");
return true;
}
}
}
當窗體是在Visual Studio設計器中打開,如果我強迫溶液清洗,然後重建,我會看到帶有文本消息框「是我在這裏!」,表明Visual Studio中有在我的用戶控件上稱爲AreYouThere屬性。
這是不應該的,因爲我已經裝修AreYouThere屬性與[可瀏覽(假)和[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)屬性。
任何想法爲什麼會發生這種情況?
(此問題發生在Visual Studio 2010和2013上)。
你能看到你的屬性網格屬性將其標記。你可能想要的是測試設計模式,並阻止你的代碼執行。 –
不,由於我使用了[Browsable(false)]屬性,該屬性並沒有像預期的那樣出現在屬性網格中。我可以測試在屬性本身中是否處於設計模式,但是這仍然不會阻止該屬性被Visual Studio調用。 – ahazzah
檢查你的InitializeComponent方法來驗證它不在那裏。如果是這樣,刪除它,看看它是否重現自己。 –