2012-03-15 100 views
0

我試圖阻止Visual Studio嘗試序列化下拉列表中的datasource。它只是一個簡單的控件,它從數據庫加載其數據源,並從ComboBox繼承。我用於datasoure的對象不是可序列化的,所以當我試圖做幾乎任何設計器時,它都會出錯,稱代碼生成失敗。我已經嘗試將此添加到我的代碼希望它會阻止VS這樣做,但它沒有奏效。從組合框導出的Visual Studio設計器和控件

<Obsolete("This property does nothing.")> 
    <System.ComponentModel.Browsable(False)> _ 
    <System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden)> _ 
    Public Shadows Property Datasource() As Object 
     Get 
      Return Nothing 
     End Get 
     Set(ByVal value As Object) 

     End Set 
    End Property 

它仍然以某種方式被訪問datasource,所以它必須被看到我的控制作爲ComboBox和閱讀基類屬性。我能做些什麼來阻止它?

+0

如何從數據庫加載數據源?聽起來像設計師也在嘗試這樣做。問題不在發佈的代碼中。 – LarsTech 2012-03-15 19:44:44

+0

@LarsTech,問題不在發佈的代碼中,它在VS設計器中(沒有可用的代碼)。我在構造函數中加載數據源,出於某種原因,VS正在努力序列化我加載的數據源,然後將其放入'InitializeComponent'函數中。 – Kratz 2012-03-15 20:14:41

+0

設計者不得不運行空構造函數。如果你把它放在DataSource設置的前面,'If Not Me.DesignMode Then'是否工作? – LarsTech 2012-03-15 20:20:45

回答

0

不正是我在想什麼,但我想這不會回答這個問題,因爲我確定有沒有被綁定在設計時數據源的控制,但是使用這個屬性,

if (LicenseManager.UsageMode == LicenseUsageMode.Designtime) 
{ 
    // design time only stuff 
} 
else 
{ 
    // runtime only stuff. 
} 

從這篇文章:http://dotnetfacts.blogspot.com/2009/01/identifying-run-time-and-design-mode.html

我可以防止自己在設計時加載數據源,所以VS沒有任何嘗試序列化。

相關問題