2009-04-30 4 views
1

私は自分自身を.NetとASP.NETプロだと思っていますが、私はWindows Mobile(私は.net 3.5 CFとWindows Mobile 6をターゲットにしています)に少し慣れています。Windows Mobileのみ、1つのフォームを開いたままにします。最高のデザインの質問

私は3~4のテーブルを持つデータ駆動型アプリケーションを作成しています。私は、各テーブルのフォームを作成して、ユーザーがテーブルを検索できるようにしました。

それぞれのフォームはメインフォームから継承されており、それぞれが同じメニューを持つようになっています。

私の質問は、1つのウィンドウしか開いていないことを確認する方法です。私は、ユーザーがメニューに行き、新しいフォームを開くテーブルを選択できるようにしたい。私が望んでいないのは、ユーザーが各フォームを開いてから、3つまたは4つのウィンドウを閉じる必要があるときです。これは可能ですか?もしそうなら、どうすればいいですか?副次的に、これを行うためのより良い方法があります。私はすべての論理を一つの形にしたくありません。だから私は隠すだけではなく、ショーやパネルをしたいだけではありません。

答えて

1

私はアプリケーションのハブと呼ぶものをすべて保持しています。

各メニューをクリックするとapplciation hubが呼び出され、各フォームがそれを参照します。

フォームを切り替えるときに、アプリケーションハブは現在のフォームを追跡して閉じ、要求されたフォームをロードする必要があります。

これはあまり書き込むコードではなく、うまく機能します。

または...パフォーマンスが向上し、アプリケーションハブの考え方を維持し、ダイアログを開いたままにしておきます。常にフォームをリロードするのではなく、そのように優れたパフォーマンスを発揮します。

次に、シャットダウン時にアプリケーションハブは、開いているフォーム(実行中の各フォームへの参照が必要)を確認し、ユーザーのために閉じます。

1

複数のフォーム(mainFormを継承したフォーム)を使用する代わりに、UserControlsにテーブルの内容を追加し、Creation/Destruction/Visibilityのコントロールをより簡単に行うことができます。 共通の機能を実装するには、InterfaceまたはBaseUserControlを使用します。

+0

これはあまりにも私の好みのパターンです。 :) – Quibblesome

1

この記事で、しばらくはない正確に何を求めている、私は、.NET CFアプリケーションを再設計されたときにとても役に立ちました:Creating a Multiple Form Application Framework for the .NET Compact Framework

私のアプリケーションは、両方の世界のビットを必要 - 私が開いている単一のフォームを持っていると思いましたしかし、時には最初のページの上にセカンダリフォームを積み重ねたいこともありました(たとえば、Prefsページや他のタイプのフォームに移動した場合など)。

(これ以降の疑似コーディング)
私はViewManagerを作成し、それをシングルトンとして実装しました。アプリケーションが最初に起動すると、私はViewManager.GotoForm(frm)を呼び出します。これは、現在のフォームを必要なフォームに設定します。 すぐにViewManager.CurrentForm.ShowDialog()を呼び出します。より良い方法があると確信していますが、フォームを表示するためにShowDialog()をコールする必要がありました。

その後のViewManagerの呼び出しは、.ReplaceFormまたは.StackFormの形式を取ることができます。違いはかなり直感的でなければなりません。
このようなビューマネージャでできることは、表示されていないキャッシュフォームですが、おそらくは再設定され、設定コストが高くなる可能性があります(たとえば、データ駆動型のアプリケーションではデータベースフォームに表示するフィールドまたはテーブルを決定するためのもので、実行時には変更されません)。

ここでのトリックは、アプリケーション内のどこでも.Show()または.ShowDialog()を呼び出さないということです。フォームの次のインスタンスの読み込みを処理するビューマネージャーを通してすべてのフォームナビゲーションをルーティングし、キャッシュされていない場合)、ロードする前に新しいデータをフォームのUIに渡す場合は、任意の種類のデータ入力ロジックをディスパッチします。

関連する問題