.netフレームワークは、クラスでフォームをどのようにネストしますか。 (vb.net)
-
05-07-2019 - |
質問
リフレクターを使用してフレームワーク内のいくつかのクラスを見ると、フォームとユーザーコントロールがプライベートになり、親クラスにネストされていることがわかります。
たとえば、そのコントロールに固有のポップアップフォームを使用するコントロールがあります。 現時点では、ポップアップフォームの友人をアクセス可能にします。 フレームワークの方法でやりたい場合は、プライベートにしてコントロールクラスにネストします。 ただし、これを行うと、ideを使用してフォームを設計できなくなり、コンパイルしようとするとエラーが発生します。 そこで、2つの質問があります:
(1)マイクロソフトは、すべてをプライベートにネストするために、最後に何かをしますか?
(2)彼らのやり方は好ましい方法ですか、それとも友人のアクセサに固執すべきですか?
解決
ネストされたフォームの方が適切です。これは、正しいカプセル化を強制し、最終的なコントロールが配布用の1つの素敵なパッケージになることを意味するためです。これらのどちらもあなたの関心事ではないなら、あなたのやり方でやり続けてください。ただし、少なくともクラスをネストしてみる場合は、次のようなことができます。
- デザイナを使用して、通常どおりにクラスの外側でネストされたフォームを構築します。
- 手順1で作成したフォームと同じ名前のCLRの例と同様に、2番目の empty フォームをプライベートネストフォームとして追加します。
- 最初のフォームの
*。designer.vb
または*。designer.cs
から2番目のフォームのコンストラクターにコードを移行します。ほとんどの場合、大きなコピー/貼り付けになります。 - ステップ1からフォームを削除します。フォームを別のクラスライブラリプロジェクトに移動して、変更が必要なときに使用できるように保存します。
所属していません StackOverflow