1

私は単にこれであるクラスを作成しました

Class UserControlBase
     Inherits UserControl
End Class

次に、各 UserControls デザイナー ファイルの Inherits 句を次のように変更しました。

   Inherits UserControlBase

通常、デザイナー ファイルを手動で変更するべきではないことはわかっています。しかし、このような場合、他に何ができますか?これでよろしいですか?私が知らないベストプラクティスはありますか?同じ目的を達成する他の方法はありますか (UserControl を拡張する) ?

4

4 に答える 4

3

Inherits 行の変更、名前空間の追加、または Imports/Using ステートメントの追加に問題はありませんでした。これら 3 つのいずれかを行う必要がある場合、これらの要件を処理する方法は他にあまりありません。

于 2009-07-14T03:00:07.773 に答える
3

私は自分の C# プロジェクトでそれらを常に変更しています...多くの場合、デザイナーで一度行ったことを同様の形式に複製し、同じことを別の形式で実行するのが最も簡単な方法です。Visual Studio は、変更を読み取ってデザイナーに組み込むことができます。編集しないでくださいというコメントがある理由が本当にわかりません。私のアドバイスは、ソース管理を使用していることを確認し、先に進んで編集し、十分にテストしてください。機能する場合は素晴らしいですが、機能しない場合はいつでも編集を元に戻すことができます.

于 2009-07-14T03:00:39.753 に答える
1

Designer ファイルは非常に単純なコードです。問題を複雑にするためにそこに通常見られる唯一のことは (ほんのわずかですが)、ファイルの上部と下部にある BeginInit/EndInit 呼び出しです。これらの間のコードはかなり寛容です。

*そうは言っても、実行時にのみ実行されるコードをそこに置かないでください。ランタイムに依存するコードはデザイン時に失敗するため、デザイン ビューでコントロールを開こうとするとチャンクが壊れます。以前はレッド スクリーン オブ ダーンが表示されていましたが、最近 IDE がどのような影響を与えるかはわかりませんが、問題が発生し、通常のトリックで問題が解決しない場合は、カスタマイズしたセクションを削除してみてください。

さらにそのメモ (怖がらせるためではなく、私たちが経験した問題のいくつかを回避することを願っています) コードが現在ビルドされているソリューションの一部ではない場合、コードがランタイムまたはデザインタイムで実行されているかどうかを判断する手段が失敗することがよくあります/事業。

したがって、すべてを家に持ち帰るために、単純な UI レイアウト/winform の変更は、デザイナー コードで手動で行うのに問題ありません。データ バインディングと外部依存関係 (サード パーティのコントロール ライブラリの呼び出しを除く) には、慎重に取り組む必要があります。

于 2009-07-14T03:10:54.900 に答える
1

いいえ。生成されたファイルを変更することは決して良い考えではありません。

于 2009-07-14T03:03:55.397 に答える