.netフレームワークは、クラスでフォームをどのようにネストしますか。 (vb.net)

StackOverflow https://stackoverflow.com/questions/1411098

質問

リフレクターを使用してフレームワーク内のいくつかのクラスを見ると、フォームとユーザーコントロールがプライベートになり、親クラスにネストされていることがわかります。

たとえば、そのコントロールに固有のポップアップフォームを使用するコントロールがあります。 現時点では、ポップアップフォームの友人をアクセス可能にします。 フレームワークの方法でやりたい場合は、プライベートにしてコントロールクラスにネストします。 ただし、これを行うと、ideを使用してフォームを設計できなくなり、コンパイルしようとするとエラーが発生します。 そこで、2つの質問があります:

(1)マイクロソフトは、すべてをプライベートにネストするために、最後に何かをしますか?

(2)彼らのやり方は好ましい方法ですか、それとも友人のアクセサに固執すべきですか?

役に立ちましたか?

解決

ネストされたフォームの方が適切です。これは、正しいカプセル化を強制し、最終的なコントロールが配布用の1つの素敵なパッケージになることを意味するためです。これらのどちらもあなたの関心事ではないなら、あなたのやり方でやり続けてください。ただし、少なくともクラスをネストしてみる場合は、次のようなことができます。

  1. デザイナを使用して、通常どおりにクラスの外側でネストされたフォームを構築します。
  2. 手順1で作成したフォームと同じ名前のCLRの例と同様に、2番目の empty フォームをプライベートネストフォームとして追加します。
  3. 最初のフォームの *。designer.vb または *。designer.cs から2番目のフォームのコンストラクターにコードを移行します。ほとんどの場合、大きなコピー/貼り付けになります。
  4. ステップ1からフォームを削除します。フォームを別のクラスライブラリプロジェクトに移動して、変更が必要なときに使用できるように保存します。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top