元に戻せないほど変更されたプロジェクトを継承しました。フォーム上のすべてのコントロールは、[プロパティ] ウィンドウ以外でデザイナーで変更することはできません。各コントロールには、通常、非表示アイテム (DataSource など) 用に予約されているセクションの下の領域 (画像を参照) にアイコンがあります。これを元に戻し、すべてを消去して最初からやり直すことなく、デザイナーを使用可能なバージョンに戻すにはどうすればよいですか?
4 に答える
デザイナーで変更できないコントロールを含む dll をロードする必要があります。
手順は次のとおりです。
ビジュアル スタジオ デザイナーのツールボックスを右クリックします (たとえば、[全般] で)。
[項目を選択...] を選択します。
しばらくするとアイテムをロードし、[参照] を押して、コンポーネントがグリッドに表示されるよりも関心のある dll を選択します。対象のコントロールを含むすべての dll に対してこれを行います。
- コンポーネントをチェックしたことを確認してください (多くのコンポーネントが読み込まれている場合は、フィルター テキスト ボックスを使用してください)。
OKを押します。
これで、デザイナーでコントロールを移動できるはずです。
コントロールがロックされていませんか? プログラマーがすべてのコントロールをロックしているレガシ コードに遭遇しました。つまり、デザイナーでコントロールを移動したり、サイズを変更したりできません。その場合は、それらをすべて選択し、Locked
プロパティを false に変更します (ロックされている場合は、それらを選択するとデザイナーに南京錠も表示されます。
そうでない場合は、新しいダイアログ/フォームを作成し、コントロールをコピーして、問題が解決するかどうかを確認できます。もう 1 つのトリックは、ユーザー コントロールの 2 番目のインスタンスを追加して、新しく追加されたコントロールが期待どおりに機能するかどうかを確認することです。その場合は、コードを調べて、すべてのイベント/ロジックを新しいコントロールに向けます (面倒ですが、うまくいくかもしれません)。
また、ユーザー コントロールをインスタンス化したフォーム/コントロールのデザイナで、ユーザー コントロールの個々のサブコントロールを編集することはできません。ユーザー コントロールの個々の (サブ) コントロールを編集するには、ユーザー コントロールのデザイナーに移動する必要があります。
Infragistics コントロールがコンポーネント トレイに表示されている場合、バージョンが異なる可能性があります。licenses.licx ファイルを開いて、そこからコンテンツを削除してみてください。マシンに Infragistics コントロールがインストールされていますか? Infragistics アセンブリの「特定のバージョン」プロパティを「false」に設定した後、違いはありますか?
これは既存のプロジェクトでのみ発生していますか、それとも同じ動作が新しいプロジェクトでも再現可能ですか?
ユーザーコントロールまたはフォームが誤って「コンポーネント」としてフラグ付けされている場合の動作も確認しました。
その場合、.csproj ファイルを手動でハッキングすることが解決策になる可能性があります。プロジェクト ファイルをテキスト エディターで開き、コントロールへの参照を見つけます。サブタイプが次のように定義されている場合:
<Compile Include="MyControl.cs">
<SubType>Component</SubType>
</Compile>
フォーム デザイナーはそれをそのように解釈します。「SubType」を「UserControl」に変更して修正できます。