web-dev-qa-db-ja.com

Windowsフォーム(C#)のインポート、Visual Studio 2012

既存のWindowsフォームをVS2012WinFormプロジェクトに追加しようとすると、「アイテムの追加/既存...」に移動してから、MyForm.cs、MyForm.designer.cs、MyForm.resxをインポートします。

これは、以前のバージョンのVSで機能していました。 (名前空間を調整する必要があるかもしれません。)

VS2012では、MyForm.designer.csとMyForm.resxは、デザイナの目的でフォームに関連付けられなくなりました。つまり、MyFormの下にネストされているのではなく、ソリューションエクスプローラーに個別のファイルエントリとして表示されます。 MyFormをダブルクリックすると、エラーメッセージのない空のフォーム(コントロールなし)が表示されます。プロジェクトはコンパイルされ、正常に実行されます。

ただし、同じファイルをプロジェクトにドラッグアンドドロップ(名前空間の調整/名前変更)すると、フォームファイルは互いに適切に関連付けられ、Designerはフォームを正常に開きます。

私は今解決策を持っていますが、誰かがこれらのアプローチの違い、それが機能しない場合に追加/既存のアイテムオプションを持つことのポイントは何ですか、そしてファイルをドラッグするときに実際に何が起こっているのかを強調できますか?どのファイル(おそらく.csproj?)がフォームファイルの結合を担当しますか?以前のバージョンのVSでは両方の方法で機能するため、これはバグであると推測できますか?

ありがとう。

15
Matthias

問題を再現しようとしましたが、成功しませんでした。

YourFormNameというフォームをインポートするとします。次に、プロジェクトにYourFormName.csのみを追加する必要があります。残りの部分(YourFormName.designer.csおよびYourFormName.resx)は自動的に追加されます。

私のステップ:

  1. VS2012でWinFormsプロジェクト(私の場合は.Net Frameworkは4)を作成します(重要な場合は11.0.05727.1)
  2. プロジェクトを右クリック->追加->既存のアイテム...
  3. コントロール付きのWinFormを検索します(VS2010 for .NET Framework 4および3.5で作成された2つのフォームを追加しました)
  4. 多少の遅延(約30〜40秒)がありましたが、どちらの場合も「Designer」は期待どおりに機能し、既存のすべてのコントロール/コードビハインドをロードしました
26
Nogard

Csファイルとwaitだけを含めてください。他のファイルを追加する必要はありません。これは機能します。

project> add existing itemに移動し、フォームmyform.csファイルを選択して、addボタンをクリックします。これにより、ファイルがプロジェクトにインポートされます。

4
NomanJaved