ユーザーがボタンをクリックしてさまざまなフォームをナビゲートできるアプリケーションを作成しようとしています。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 つずつデザインするだけです。