1

フォームにはメイン デザインが含まれており、そのフォームのコード ファイルにすべてのコードが含まれています。そのフォームをコピーして、元のフォームがあった Visual Studio のソリューション エクスプローラーの同じディレクトリに貼り付けました。リソースに関連するエラーが表示されるようになりました。先に進むと、エラーが表示されます:

エラー MSB3105: 項目 "obj\x86\Debug\BAS.frmGI1.resources" が "Resources" パラメーターで複数回指定されました。

今、私はメインフォームのデザインを失いました. 元のフォームのデザインを復元するにはどうすればよいですか?

4

2 に答える 2

4

元のフォームのコピーを作成したので、すべて (クラス、デザイナー コードなど) がまったく同じようにコピーされました。他のクラスと同様に、まったく同じ名前で定義された 2 つのクラスがある場合。彼らは衝突します。同様に、部分クラスの 2 つのファイルがあり、両方のファイルで同じ名前の変数を宣言するとします。衝突します。


あなたがしたことは、デザイナーとの間で上記の競合が発生したことです...そしてパニックになる必要はありません(またはバージョン管理などに頼る必要はありません-クリティカルフィックスの答えを意図したしゃれはありません)。

次に、それらのクラス名を修正しましょう!

  1. 複製を右クリックし、Exclude from Project ;

  2. プロジェクトのディレクトリを参照します。

  3. お気に入りのテキスト エディターでFormName.Designer.vb(またはC# の場合)開きます ( Visual Studio では (!)開きません)。FormName.Designer.cs

  4. フォームのクラスを見つけます (MySuperAwesomeFormこの例では):

    Partial Class MySuperAwesomeForm
    

    C# の場合:

    partial class MySuperAwesomeForm // FormName.Designer.cs
    
    public partial class MySuperAwesomeForm : Form // FormName.cs
    
  5. MySuperAwesomeFormのすべてのインスタンスを別の名前に置き換えます。例: MySuperAwesomeFormTwo;

  6. お気に入りのテキスト エディターでFormName.vb(またはC# の場合)開きます (ここでも、 (!) Visual Studioではないことを確認してください)。FormName.cs

  7. MySuperAwesomeFormのすべてのインスタンスをステップ 4 で使用した同じ値に置き換えます。例: MySuperAwesomeFormTwo;

    • 両方のファイルがまだ開いている場合は、保存して閉じます。

技術的には、各ファイルの最初の数行 (行が、、またはで始まる行) の 1 つだけMySuperAwesomeFormを置き換える必要があります。MySuperAwesomeFormTwoPublic Classpartial classpublic partial class

最後に、Visual Studio に戻り、新しく再分類されたフォームをプロジェクトに追加します。

于 2013-04-23T20:22:42.663 に答える
2

フォームのコピーを作成できますが、元のフォームと混同しないように名前 (ファイル名とオブジェクト名の両方) を変更する必要があります。次に、Visual Studio から Add Form ... Existing ... を選択し、新しいフォームを選択します。

エラー メッセージには obj ディレクトリが記載されているため、ビルド中にエラーが発生した可能性があります。プロジェクトのリソースを調べて、コピーした元のファイルを超えたものである場合、複製された可能性があるものを確認します。

元のソース コードを紛失した場合は、復元できない場合があります。なんらかの形式のソース管理 (VSS、TFS など) を使用しているか、少なくともバックアップされたネットワーク ディスクに頻繁にコピーを作成していることを願っています。

于 2013-04-23T18:55:47.227 に答える