2008-08-12 13 views
27

ListViewコントロールを大量に使用する.NET 2.0 windowsフォームアプリケーションがあります。Windowsフォームデザイナでフォームを読み込む際に「タイプを見つけることができませんでした」というエラーが発生しました

ListViewクラスをテンプレートのSortableListView<T>クラスにサブクラス化しました。そのため、物事を表示したり、並べ替えたりするのが少し面白くなります。

残念ながら、これはVS2005と2008年

プログラムをコンパイルし、正常に動作が、私はデザイナーで所有するフォームを表示しようとすると、私はこれらのエラーを取得するの両方で、Visual Studioのフォームデザイナを破るようだ:

  • 'MyApp.Controls.SortableListView'タイプが見つかりませんでした。このタイプのアセンブリが参照されていることを確認してください。このタイプが開発プロジェクトの一部である場合は、プロジェクトが正常に構築されていることを確認してください。

このエラー

  • 変数「listViewImagesを」の利用可能なスタックトレースやエラー行情報が宣言されていないか、割り当てられていなかったのどちらかが存在しません。 MyApp.Main.Designer.csラインで

:XYZは、カラム:1

Call stack: 
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager manager, String exceptionText, String helpLink) 
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression) 
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression) 
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement) 

問題のコードの行は、それが実際にフォームに追加された場所であり、

this.imagesTab.Controls.Add(this.listViewImages); 
です

listViewImagesは

private MyApp.Controls.SortableListView<Image> listViewImages; 

として宣言され、目にインスタンス化されます電子InitializeComponent方法を次のように

this.listViewImages = new MyApp.Controls.SortableListView<Image>(); 

を先に述べたように、プログラムをコンパイルして、完璧に動作し、私はそれが別々にコンパイルすることができますので、別々のアセンブリにSortableListViewクラスをシフトアウトしようとしたが、これは違いはありません。

ここからどこに行くのかわかりません。どんな助けもありがとう!

答えて

6

リストビューを追加したときに、ツールボックスに追加してフォームに追加しましたか?

いいえ、私はちょうどMain.Designer.csを編集し、それが原因ジェネリックに行ったことがあるかもしれない疑いMyApp.Controls.SortableListView<Image>

System.Windows.Forms.ListViewから、それを変更し、実際に解決策を見つけるために私を導きました。私はSortableListViewを行う必要があり、各クラスのために

、私はMain.Designer.csファイルではなくSortableListViewのこれらのスタブクラスを参照して作られた後、この

class ImagesListView : SortableListView<Image> { } 

LIKE「スタブクラス」を定義しました。

今すぐ、うまい!

ありがたいことに私のすべてのタイプは正面で認識されており、私は重複コードを減らす方法としてSortableListViewしか使用していません。

+0

こんにちはOrion ...私はあなたが上記のように同じ問題を抱えています...私はその部分を理解することができませんでした "私はSortableListViewを作成する必要がある各クラスについて、私は 'スタブクラス' this class ImagesListView:SortableListView {} "この問題を解決するためにあなたは何をしましたか?あなたは少し詳しく説明できますか?別の新しいクラスを作成して、それをdesigner.csに参照しましたか? –

6

これは私のコントロールが同じプロジェクトにあっても私のコントロールが別の名前空間にあった過去にこれと同じ問題がありました。それを修正するには、デザイナーが生成したコードファイルの先頭に、

using My.Other.Namespace; 

を追加する必要がありました。迷惑なことは、デザイナーがページを再生成したときに吹き飛ばされ続けていたことです。

2

MyApp.Controls.SortableListViewを含むアセンブリがGACにインストールされている可能性はありますか?

2

リストビューを追加したときに、ツールボックスに追加してフォームに追加しましたか?

1

私は何か似たようなものを持っていました。ユーザーコントロールはリモートサーバーを指していました(設計時には利用できないと思います)。

This post on MSDNは、WCFクライアントが初期化される前に、私は、コントロールの読み込み機能に、または私の場合にはポイントに

if (this.DesignMode) return; 

を追加することを示唆しました。それがトリックでした。

ので

private readonly Client _client = new Client(); 

はおそらく、あなたがそれを追加するのを忘れ

private Client _client; 

public new void Load() 
{ 
    if(DesignMode) return; 
    _client = new Client(); 
} 
2

次のようになります。

/// <summary> 
    /// Required designer variable. 
    /// </summary> 
    private System.ComponentModel.IContainer components = null; 

    /// <summary> 
    /// Release all resources used. 
    /// </summary> 
    /// <param name="disposing">true if managed resources should be removed otherwise; false.</param> 
    protected override void Dispose(bool disposing) 
    { 
     if (disposing && (components != null)) 
     { 
      components.Dispose(); 
     } 
     base.Dispose(disposing); 
    } 

    private void InitializeComponent() 
    { 
     // ... 
     this.components = new System.ComponentModel.Container(); // Not necessarily, if You do not use 
     // ... 
    } 
5

私は(競合との)大規模なSVNの変更をマージに関連した、あまりにもこの問題を抱えていました* .Designer.csファイルに保存します。解決策は、デザインビューをグラフィカルに開き、コントロールを編集し(左から右に移動)、デザインを保存し直すことでした。 * .Designer.csファイルが魔法のように変更され、次のコンパイル時に警告が消えました。

まず、すべてのコードマージの問題を修正する必要があります。これは、VSに強制的にリロードさせようとする場合にのみ有効です。

+3

これは単に真実ではありません。これらの警告が表示された場合、グラフィカル表示が破損します。何も表示されないので、「何かを動かして魔法のように修正する」ことはできません。オペラが不平を言っているだけで、エラーのリストとGUIはありません。 –

+0

私は強く反対します。これは私にとって魅力的なものでした(Framework 4.0を使用して)。デザイナーの警告を最初に数秒間表示すると、フォームが適切に描画されました。私はボタンを追加し、ボタンを削除し、ソリューションを再構築しました。警告はすべて消えました。 –

+0

ダーク - それは本当ではないと思うかもしれませんが、これは私に起こったことです。私はそれを修正しようと数時間を費やした。私はまだDesigner.csファイルの前後のバージョンを持っていたが、私はしないことを望む。 Visual Studioには、内部メタデータを正しく更新しないバグがあります。これを修正するために唯一見つかったのは、グラフィック表示を再保存して強制的に更新することです。 –

-2

私の場合、問題は私のプロジェクトのフォルダの名前でした!なぜ私はこれを考えますか: 私はSVNを使用し、 'trunk \ SGIMovel'では完全に動作します。しかし、 'OS#125 \ SGIMovel'という名前のブランチフォルダでは、カスタムコントロールを使用してトランクフォルダで動作するフォームのデザイナを開くことができません。

#から降りて素敵です。

ありがとうございます。

1

私は同じ問題がありました。私の場合、この問題はリソースの初期化が原因でした。次のコードをInitializeComponentメソッドからctorに移動しました(InitializeComponentを呼び出した後)。その後、この問題は解決されました:

this->resources = (gcnew System::ComponentModel::ComponentResourceManager(XXX::typeid)); 
15

x86/x64アーキテクチャのために私に起こりました。

Visual Studio(開発ツール自体)にはx64バージョンがないため、x64コントロールをGUIデザイナに読み込むことはできません。

これは、x86環境でGUIをチューニングし、必要に応じてx64用にコンパイルするのが最適な方法です。

+2

確かに、自分のターゲットCPUをx86に変更すると、この問題が解決されました。ありがとう! – johnnyRose

+3

これは、Microsoftのような完全なBSです。 –

+3

私は本当にx64版のVisual Studioが必要です。 – user2033412

0

私は同じ問題を抱えています。 * .Designer.cs-Fileのコントロールを削除した後、問題は解決されました。元のコードに戻った後、問題は解決されました。だから、Visual Sudioのキャッシュに問題があるようです。現時点で私はこの問題を再現することはできません。

あなたは問題がフォルダ

C emtpyしようとしている場合:

はそれが仕事でしたUsers \ユーザー\ YOURNAME \のAppData \ローカル\マイクロソフト\ VisualStudioを\ VERSIONの\デザイナー\ ShadowCacheを?

関連する問題