1

他のすべてのフォームを開くメイン画面を作成しようとしていますが、エレガントにしたいと思っているので、そのようなことをしました

ここに画像の説明を入力してください

コードはそのようなものです

   this.IsMdiContainer = true;
            City CityForm = new City();
            CityForm.MdiParent = this;
            CityForm.Show();
            CityForm.WindowState = FormWindowState.Maximized;

しかし、問題は私が別のフォームと別のフォームを開くときです..すべてのフォームが残り、効果的でスマートではないと思います

誰かがそれを行う別の方法がありますか?

4

5 に答える 5

4

これにタブ付きインターフェースを使用することを検討しましたか?すべての開いているファイル(ソースコードとフォーム)を単一のタブとして持つVisual Studioのエディター部分のようなものですか?個人的には、これはMDIインターフェースよりもはるかにエレガントだと思います。

これを行うUserControlには、コンテンツのフォームの代わりにを作成します。新しい「ビュー」を開く必要がある場合は、にタブを追加しTabControl、それぞれのインスタンスを作成しますUserControlUserControlこれをタブに追加し、Dockプロパティをに設定しますFill

これは非常に簡単で、今日のユーザーはMDIインターフェイスよりもタブ付きインターフェイスに精通しています。

于 2013-03-27T08:49:31.703 に答える
2

の単一のコピーを保持しCity CityForm、新しいフォームを作成するたびにそれを再利用する必要があります(メンバー変数として)

Form.IsMdiContainerプロパティを見て、その使用Form mdiChildForm方法は使用方法に近いはずです。City CityForm

于 2013-03-27T08:46:17.133 に答える
2

私はTabControlを使用します。これは、同じ場所に複数のフォームを表示するためのエレガントな方法です:http: //msdn.microsoft.com/library/system.windows.forms.tabcontrol.aspx

TabControlには、TabPagesプロパティを介して追加するTabPageオブジェクトによって表されるタブページが含まれています。このコレクションのタブページの順序は、タブがコントロールに表示される順序を反映しています。ユーザーは、コントロールのタブの1つをクリックして、現在のTabPageを変更できます。

于 2013-03-27T08:48:44.687 に答える
0

CityForm.ShowDialog()の代わりに使用してみてくださいCityForm.Show()

于 2013-03-27T08:49:36.633 に答える
0

フォームをMDIコンテナに「ドッキング」する必要があります。

City CityForm f1 = new City();
City.MdiParent = this;
City.Dock = DockStyle.Fill;
City.Show();

その後、必要に応じてフォームを閉じることができます。

ただし、自動的に実行したい場合は、Thorsten Dittmarが提案したように、タブ付きのインターフェイスを調べます。

于 2013-03-27T08:54:54.277 に答える