ユーザーがボタンをクリックしてさまざまなフォームをナビゲートできるアプリケーションを作成しようとしています。IE:ネットワークステータスをクリックすると、メインフォームがネットワークステータスフォームに置き換えられ、[戻る]をクリックしてメインフォームに戻ることができます。
これを行うための最良のアプローチは何でしょうか?パネルを考えていますが、ユーザーコントロールを使用するように言われ、あまり詳しくありません。ご指導をいただければ幸いです。
投稿を見ると、別のものを持っていない理由がわかりませFormん。
Form別の完全に機能する を作成して、 "source" を非表示にしないのはなぜですかForm。
あなたが持っている場所に、ある種のforms linked list構造を作成することができます(たとえば)
public class MyAppForm : Form
{
MyAppForm _prev...
MyAppForm _next...
}
このように、(たとえば)Go to nextボタンがクリックされた場所で、オリジナルを非表示にし、選択して表示し_nextます。
ただのアイデア。よりシンプルにするか、アプリのニーズに合わせて変更することができます。
Show必要に応じて、必要に応じていくつかのフォームを使用できますHide。
また、メニュー、ステータス、およびその他のバーをホストできる 1 つの親フォームを持つことができる MDI フォームのようなものの使用を検討することもできます。

やあ、
に示されている要件を前提としていますstoryboard。UserControlの図のUserControl of these many controlsとおりDOCKEDです。空白の領域でshow / hide、page / 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 つずつデザインするだけです。