1

Microsoft Visual Studio 2012 の MDI アプリケーションでいくつかのプラクティスを実行しようとしていますが、何か間違っているようです。

新しいWindows フォーム アプリケーションプロジェクトを作成し、最初のフォームのIsMdiContainerプロパティをTrueに変更しました。次に、ソリューション エクスプローラーでプロジェクトを右クリックし、[追加]、[新しい項目]、[Windows フォーム] の順に選択して、新しいフォームを追加します。

form2 のMdiParentプロパティを MDI Container フォームに設定しようとしていますが、form2 にはMdiParentプロパティがないようです。アルファベット順に並べ替えた form2 のプロパティを次に示します。

ここに画像の説明を入力

もちろん、この方法で form2 を子フォームとして開くことができます。

form2 newMDIChild = new form2();
newMDIChild.MdiParent = this;
newMDIChild.Show();

なぜフォームにMDIParentプロパティがないのか疑問に思いました。このページによると 、子フォームにはMdiParentプロパティがあります。

どんな種類の助けも大歓迎です。

4

1 に答える 1

2

新しいフォームをインスタンス化し、そこに割り当てて、正しくやっていますMdiParent。本当にそのようなプロパティがあり、あなたのコードではそれを使用しています:

newMDIChild.MdiParent = this;

これはまったく問題なく、通常の方法です。

さて、あなたが指摘しているのは、デザイナーがそれを示していないということですが、これも真実です. これは、プロパティが存在しないことを意味するものではありません (存在し、実際に使用しています!)。MdiParentデザイナーのプロパティ シートにない理由は別の歴史であり、まったく関係ありませんが、設計時に適切に設定することが不可能ではないにしても難しいという事実に関係していると思います。考えてみると、別のフォームのインスタンスが含まれている必要があります ( にIsMdiContainer設定されていtrueます)。設計時には、インスタンスはプログラムの実行時に作成されるため、何もありません。通常は別のフォームを渡す必要があるため、事前に設定する方法はありませんが、設計中に知ることはできません。

于 2013-07-16T01:51:07.910 に答える