web-dev-qa-db-ja.com

Visual Studioのプロジェクト間でwinformをコピーする

Visual Studioのソリューション内で1つのプロジェクトから別のプロジェクトにフォームをコピーまたはカット/ペーストする最良の方法は何ですか?

ソリューションエクスプローラー(ドラッグアンドドロップまたは右クリックでカットアンドペースト)を使用して試してみると、基礎となるC#コードのみがコピーされ、フォームデザイナでフォームを視覚化するのに必要な「ビットとピース」はコピーされません。

32
Vidar

それを考え出した-それは何か手ごわいであろうことを知っていた。

どうやらターゲットプロジェクトには参照が必要です:

  • System.Windows.Forms
  • System.Drawing

コピーまたは貼り付けを行う前に最初にプロジェクトに含めます。さもないと、説明した問題が発生します。

BTWを助けようとした人に感謝します。

9
Vidar
  1. .cs.designerresxの3つのファイルをターゲットソリューションフォルダーにコピーします。
  2. ターゲットプロジェクトで、Add existing itemを選択し、最初にデザイナーファイルを追加します。
  3. 名前空間属性を変更します。 .csファイルも入ってくるはずです。
  4. .csファイルの名前空間を変更します。
  5. Add existing itemを使用してresxファイルを追加します。
43
MORGAN OLSON

あるVS2013プロジェクトから別のプロジェクトにフォームをコピーするには、最も簡単な(マウスのクリック回数が最も少ない)が次のとおりです。

  1. ターゲットプロジェクトで、親フォルダー(おそらくプロジェクト)を右クリックし、メニューで[追加;既存のアイテム]を選択します。

  2. 次に、ソースプロジェクトでフォームのcsファイルを選択します。たとえば、Form.cs(Form.Designer.csまたはForm.resxではなく)を選択します。

  3. ターゲットプロジェクトでForm.csを開き、名前空間(すべてのインスタンス)を変更します。

  4. Form.csを閉じて再度開くと、すべてのコントロールなどが表示されます。

17
Chris Patterson

2012年には、これがより簡単になりました。[ファイル]> [追加]> [既存のプロジェクト]> [フォームをドラッグして、追加するプロジェクトにドロップするだけです。

7
Tom Wash

Visual Studio 2012で次のプロセスを試しましたが、うまくいきました。

  1. [ソリューション]> [追加]> [既存のプロジェクト]メニューを右クリックして、フォームをインポートするプロジェクトをソリューションに追加します。プロジェクトを選択して「OK」をクリックします。
  2. コピーするフォームを右クリックして、コピーを選択します。
  3. コピーするプロジェクトを右クリックして、貼り付けを選択します。
  4. フォームがプロジェクトにコピーされ、名前空間の名前が変更されます。
  5. ソリューションから手順1で追加したプロジェクトを削除します。
5
Ram

ReSharper (デモを入手)を使用して、コードビューでクラスを右クリックし、[リファクタリング]-> [移動]を選択して、別のプロジェクトに移動します。

追加の利点は、名前空間をプロジェクト間で移動して変更すると、すべての参照が自動更新されることです。

4
Chris Doggett

Form.csだけでなく、Form.designer.csおよびForm.resxファイルも必ずコピーしてください。

しかし、同じソリューション内の複数のプロジェクトで同じフォームのコピーを保持する理由を尋ねる必要があります。その中のコードを一般化し、クラスライブラリに配置し、適用可能な場所で再利用したいように聞こえます。

3
Fredrik Mörk

同じマシンでフォームを作成したい場合は、これを行うことができます。

ソリューションエクスプローラーでプロジェクト-> 追加-> 既存のアイテムを追加.

ソースディレクトリから.cs (Sample.cs)ファイルのみを選択し、動作する現在のソリューションエクスプローラーを更新します。

2
Anto sujesh

Visual Studio V.12の場合、これは私のために働いた唯一の方法です(上記のエントリが混在しています):

  • フォームを構成する3つのファイルをファイルエクスプローラーからコピーします。
  • Visual Studioのソリューションエクスプローラーのトップバーで、「すべてのファイルを表示」をオンにします。
  • File.csファイルは灰色で表示されます。右ボタンをクリックして、「プロジェクトに含める」を選択します。ソリューションエクスプローラーは、3つのファイル(.csファイルの下の.designerと.resx)を自動的にリンクします。 file.csは、アイコンをc ++からフォームアイコンに変更します。
1

異なるプロジェクトで同じフォームを使用する必要がある場合の解決策は、「クラスライブラリプロジェクト」を作成し、このプロジェクトに共有する必要があるフォームを追加し、メインプロジェクトにdllへの参照を追加するだけです。フォームを簡単に参照できます。私にぴったりの作品

0
Abrahan Pacheco

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ファイルすべて)。

0
Alan

ファイルを選択していますか、またはデザイナーを使用してすべてのコントロールを「コピー」していますか? YourForm.csファイルをソリューションエクスプローラーにコピーし、コピーアンドペーストまたはドラッグアンドドロップで他のプロジェクトにコピーすることで、必要な処理を実行できます。

0
Adam Robinson

Visual Studio 2010を使用していますが、実行した手順は次のとおりです。

  1. 3つのファイルすべて(.cs、.resx、.Designer.cs)をコピー先のプロジェクトフォルダーにコピーします。
  2. Visual Studioで、右クリックプロジェクト-> 追加-> 既存のアイテム...
  3. 3つのファイル(.cs、.resx、.Designer.cs)をすべて選択し、追加をクリックします。
  4. 2つのファイル(.cs、.Designer.cs)の名前空間を変更します(宛先プロジェクトの名前空間が異なる場合)。
  5. プロジェクトを実行します。
  6. できた!
0
LifeiSHot

**これは私のために働く:

1)ソースファイル(.csまたはvb、.designer、.resx)をターゲットフォルダーにコピーします

2)ターゲットソリューションの隠しファイルを表示する

3)これらのファイルを選択し、プロジェクトに含めます。

これにより、winformまたはその他の部分的に分割されたファイルがきれいに追加されます。

0
Nexus23

Visual Studio 2015では、ソリューションエクスプローラーをクリックし、マウスを右クリックして[追加]-> [既存のアイテム]を選択し、Form.csのように追加したいフォームを自動的にForm.designer.csから選択します。Form.resxが追加されます

0
radhason power

VS 2015を使用している場合は、「。vb」ファイルを追加し、新しいプロジェクト名で名前空間を変更するだけです。

例:VS2008を使用して作成した「Form1」を、VS2015を使用して作成した新しいプロジェクトに追加する場合。

  1. すべての「.vb」ファイル、「。resx」ファイル、「。disigner.vb」ファイルを新しいプロジェクトフォルダーにコピーします。
  2. 次に、新しいプロジェクト名を使用して「.disigner.vb」ファイルの名前空間を変更します。

これらの2つのステップはうまくいきました。

0
Kasun Hasitha