2012-03-15 10 views
0

Visual Studioがドロップダウンリストのdatasourceをシリアル化しようとしないようにしようとしています。これは、データベースからデータソースをロードし、ComboBoxから継承する単純なコントロールです。私がdatasoureのために使用するオブジェクトは直列化可能ではないので、コード生成が失敗したと言って、デザイナーのほとんどを何とかしようとするとエラーになります。私はこれをVSがこれをやめることを止めることを望む私のコードにこれを追加しようとしましたが、うまくいきませんでした。Visual Studio DesignerとComboBoxから派生したコントロール

<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

+0

@LarsTech、問題は投稿されたコードではなく、VSデザイナー(コードなし)にあります。私はデータソースをコンストラクタにロードしています。なぜなら、何らかの理由でVSがロードしたデータソースをシリアル化して、それを 'InitializeComponent'関数に入れようとしているからです。 – Kratz

+0

デザイナーは、空のコンストラクタを実行する必要があります。あなたがDataSource設定の前に置いた場合、 'Not Me.DesignMode Then'は動作しますか? – LarsTech

答えて

0

ない、まさに私が考えていたが、私は、私は、設計時にデータソースにバインドされていないコントロールでOKだとして、それは、質問に答えるないと思いますが、このプロパティを使用して、

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

からこの記事:VSをシリアライズしようとすることは何もありませんので、http://dotnetfacts.blogspot.com/2009/01/identifying-run-time-and-design-mode.html

私は、デザイン時にデータソースをロードするから自分自身を防ぐことができます。

関連する問題