2

ユーザーがボタンをクリックしてさまざまなフォームをナビゲートできるアプリケーションを作成しようとしています。IE:ネットワークステータスをクリックすると、メインフォームがネットワークステータスフォームに置き換えられ、[戻る]をクリックしてメインフォームに戻ることができます。

これを行うための最良のアプローチは何でしょうか?パネルを考えていますが、ユーザーコントロールを使用するように言われ、あまり詳しくありません。ご指導をいただければ幸いです。

4

3 に答える 3

2

投稿を見ると、別のものを持っていない理由がわかりませFormん。

Form別の完全に機能する を作成して、 "source" を非表示にしないのはなぜですかForm

あなたが持っている場所に、ある種のforms linked list構造を作成することができます(たとえば)

public class MyAppForm : Form 
{
     MyAppForm _prev... 
     MyAppForm _next...
}

このように、(たとえば)Go to nextボタンがクリックされた場所で、オリジナルを非表示にし、選択して表示し_nextます。

ただのアイデア。よりシンプルにするか、アプリのニーズに合わせて変更することができます。

于 2012-06-15T09:19:21.410 に答える
1

Show必要に応じて、必要に応じていくつかのフォームを使用できますHide

また、メニュー、ステータス、およびその他のバーをホストできる 1 つの親フォームを持つことができる MDI フォームのようなものの使用を検討することもできます。

于 2012-06-15T09:23:35.933 に答える
1

ここに画像の説明を入力

やあ、

に示されている要件を前提としていますstoryboard。UserControlの図のUserControl of these many controlsとおりDOCKEDです。空白の領域でshow / hidepage / form / screen.

このコードは、ナビゲーションでフォームを動的に表示/非表示にするトリックを実行できることをお勧めします。これをナビゲーションビットに入れます。つまり、[次へ] / [前へ] をクリックしてUsercontrol-

        form.Location = new Point(leftPaneControl.Width , BannerControl.Height);
        form.Size = new Size(this.Width - leftPaneControl.Width, this.Height - BannerControl.Height);
        form.Anchor = AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left |
                                   AnchorStyles.Right;
        this.Controls.Add(form);

Next および Prev clicks ではControls.RemoveByKey(...)、既存のフォームを非表示にするだけです。上記のコードはadd、同じフォームをインスタンス化した後、次のそれぞれのフォームになります。unique namesこれは、すべてのforms / screen / page[whatever you say] に対して定義した場合に、コレクションからコントロールを削除するための非常に優れた関数です。

このユーザー コントロールの作成は 1 回限りの作業であるため、このアプローチ/設計により、ページ/画面の設計に専念できます。その後、個々のナビゲーション ページ/画面を 1 つずつデザインするだけです。

于 2012-06-15T09:52:35.257 に答える