Visual Studioのソリューション内で1つのプロジェクトから別のプロジェクトにフォームをコピーまたはカット/ペーストする最良の方法は何ですか?
ソリューションエクスプローラー(ドラッグアンドドロップまたは右クリックでカットアンドペースト)を使用して試してみると、基礎となるC#コードのみがコピーされ、フォームデザイナでフォームを視覚化するのに必要な「ビットとピース」はコピーされません。
それを考え出した-それは何か手ごわいであろうことを知っていた。
どうやらターゲットプロジェクトには参照が必要です:
コピーまたは貼り付けを行う前に最初にプロジェクトに含めます。さもないと、説明した問題が発生します。
BTWを助けようとした人に感謝します。
.cs
、.designer
、resx
の3つのファイルをターゲットソリューションフォルダーにコピーします。Add existing item
を選択し、最初にデザイナーファイルを追加します。.cs
ファイルも入ってくるはずです。.cs
ファイルの名前空間を変更します。Add existing item
を使用してresx
ファイルを追加します。あるVS2013プロジェクトから別のプロジェクトにフォームをコピーするには、最も簡単な(マウスのクリック回数が最も少ない)が次のとおりです。
ターゲットプロジェクトで、親フォルダー(おそらくプロジェクト)を右クリックし、メニューで[追加;既存のアイテム]を選択します。
次に、ソースプロジェクトでフォームのcsファイルを選択します。たとえば、Form.cs(Form.Designer.csまたはForm.resxではなく)を選択します。
ターゲットプロジェクトでForm.csを開き、名前空間(すべてのインスタンス)を変更します。
Form.csを閉じて再度開くと、すべてのコントロールなどが表示されます。
2012年には、これがより簡単になりました。[ファイル]> [追加]> [既存のプロジェクト]> [フォームをドラッグして、追加するプロジェクトにドロップするだけです。
Visual Studio 2012で次のプロセスを試しましたが、うまくいきました。
ReSharper (デモを入手)を使用して、コードビューでクラスを右クリックし、[リファクタリング]-> [移動]を選択して、別のプロジェクトに移動します。
追加の利点は、名前空間をプロジェクト間で移動して変更すると、すべての参照が自動更新されることです。
Form.csだけでなく、Form.designer.csおよびForm.resxファイルも必ずコピーしてください。
しかし、同じソリューション内の複数のプロジェクトで同じフォームのコピーを保持する理由を尋ねる必要があります。その中のコードを一般化し、クラスライブラリに配置し、適用可能な場所で再利用したいように聞こえます。
同じマシンでフォームを作成したい場合は、これを行うことができます。
ソリューションエクスプローラーでプロジェクト-> 追加-> 既存のアイテムを追加.
ソースディレクトリから.cs (Sample.cs)
ファイルのみを選択し、動作する現在のソリューションエクスプローラーを更新します。
Visual Studio V.12の場合、これは私のために働いた唯一の方法です(上記のエントリが混在しています):
異なるプロジェクトで同じフォームを使用する必要がある場合の解決策は、「クラスライブラリプロジェクト」を作成し、このプロジェクトに共有する必要があるフォームを追加し、メインプロジェクトにdllへの参照を追加するだけです。フォームを簡単に参照できます。私にぴったりの作品
VS2013を使用してこれをテストしたところ、信頼性と一貫性があります。これは上記のコメントに似ていますが、より高速な別の方法が追加されます。
(1st) Windowsファイルエクスプローラーで3つのフォームファイル(.vbまたは.cs、.designer、.resx)をすべてハイライトしてコピーします
(2nd)これは2つの方法で実現できます。
(2a-1)ファイルエクスプローラーで、3つのファイルを他のフォームと共にプロジェクトフォルダーに貼り付けます
(2a-2)VS Solution Explorerで、「すべてのファイルを表示」をオンにし、貼り付けたフォームを右クリックして「プロジェクトに含める」を選択します。他の変更なしで動作するはずです。
または、私はより良いと思う:
(2b-1)VSで、ソリューションエクスプローラーをクリックし、w/Control-Cを貼り付けます。 (何らかの理由で、ソリューションエクスプローラーの右クリックコンテキストメニューには貼り付けオプションが表示されない場合がありますが、キーボードからは機能します。)この方法を使用すると、一度にいくつでもフォームを追加できます(各3ファイルすべて)。
ファイルを選択していますか、またはデザイナーを使用してすべてのコントロールを「コピー」していますか? YourForm.cs
ファイルをソリューションエクスプローラーにコピーし、コピーアンドペーストまたはドラッグアンドドロップで他のプロジェクトにコピーすることで、必要な処理を実行できます。
Visual Studio 2010を使用していますが、実行した手順は次のとおりです。
**これは私のために働く:
1)ソースファイル(.csまたはvb、.designer、.resx)をターゲットフォルダーにコピーします
2)ターゲットソリューションの隠しファイルを表示する
3)これらのファイルを選択し、プロジェクトに含めます。
これにより、winformまたはその他の部分的に分割されたファイルがきれいに追加されます。
Visual Studio 2015では、ソリューションエクスプローラーをクリックし、マウスを右クリックして[追加]-> [既存のアイテム]を選択し、Form.csのように追加したいフォームを自動的にForm.designer.csから選択します。Form.resxが追加されます
VS 2015を使用している場合は、「。vb」ファイルを追加し、新しいプロジェクト名で名前空間を変更するだけです。
例:VS2008を使用して作成した「Form1」を、VS2015を使用して作成した新しいプロジェクトに追加する場合。
これらの2つのステップはうまくいきました。