2011-06-22 1 views
0

ユーザーコントロールを作成し、ツールボックスにフォームコンポーネントとして表示します。次に、ユーザーコントロールをドラッグしてフォームにドロップしようとすると、このビジュアルスタジオエラーが発生します。ユーザーコントロールを.NETウィンドウプロジェクトでドラッグアンドドロップできません

"指定された名前付き接続がコンフィグレーションで見つからないか、エンティティクライアントプロバイダで使用する予定がないか、有効ではありません。

なぜこのエラーが発生しますか?

しかし、同じプロジェクトの下にある他のユーザーコントロールをドラッグアンドドロップすることはできます。私はこのユーザーコントロールの作成に欠けていたものを知りません。

+0

のコンストラクタで「loaddataの」このメソッドを呼び出しますエンティティモデルを使用しますか? – Usha

答えて

2

UserControlクラスのコードがデザイン時に実行されることに注意してください。コンストラクタ、OnLoadメソッド、およびLoadイベント。しかし、OnPaint()のようなメソッドもあります。このコードが環境設定に依存するものを正しく設定している場合、そのコードは例外をスローし、デザイナーがコントロールをフォームに追加することを心配するようになります。確かに、 "設定に見つからない"というエラーが出ても、設定ファイルはありません。

DesignModeを適切に使用して、そのようなコードをスキップします。このように:言う

protected override void OnLoad(EventArgs e) { 
     if (!this.DesignMode) { 
      // Do stuff... 
     } 
     base.OnLoad(e); 
    } 
0

Hansとして、あなたはコンストラクタonLoadなどでのdesignModeプロパティを使用する必要があるかもしれません。また、接続を使用するすべてのパブリックプロパティは、この属性を持っていることを確認してください。

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
public string Foo 
{ 
    get; 
    set; 
} 

そうすれば、設計者は、フォームにコントロールを追加するときにそれらを設定しようとしません。これは、設計時に設定しないプロパティのために、常に入り込むのが良い習慣です。

0

このエラーは、データベースからデータを読み込むコードをuserControlのコンストラクタに挿入すると表示されます。

「ロードデータまたはエンティティ・フレームワーク初期化」

ので溶液を方法コンストラクタからデータをロードするコードを移動させることです。あなたはそれを "loadData"と呼ぶことができます。

とプロジェクトは、データソースのためのエンティティframeowrkを使用して、私はEntity Frameworkのを使用してコードをコメントアウトするとき、それは働いてEBに思える...何かがすることにある親フォーム

関連する問題