デスクトップ アプリケーションの GUI を開発した経験はほとんどありませんが、エンティティ (顧客、サプライヤーなど) を作成/編集するための典型的な GUI を開発したいと考えています。
【※質問を閉じないでください。私は質問の準備に多大な努力を払いましたが、本当に助けが必要です. *]
タスクを分析した後、次の可能なオプションを設計しました。
1) 単純なケースでは、通常のグリッドを使用してタスクを解決できます。
つまり、ワークフローは次のとおりです。 [追加] ボタンを押すと、新しい行がグリッドに追加されます。[削除] を押すと、ユーザーは、フォーカスされたエンティティ インスタンスを本当に削除するかどうかの確認を求められます。[保存] を押すと、以前に行ったすべての変更が保存されます。[閉じる] を押すと、フォームが閉じられます (ユーザーは閉じる前に変更を保存するかどうか尋ねられます)。
短所: このような GUI は非常に単純な場合にしか機能しないと思います。グリッドで複雑なものを編集することは、ユーザーにとっても開発者にとっても快適ではありません (グリッドで複雑な編集を実装することは簡単ではないと思います)。
2) より複雑なエンティティの場合、次のオプションが可能です。
ここでは、グリッドは読み取り専用モードでのみ使用されます。[追加] を押すと、新しいエンティティに関する情報を入力するためのモーダル フォームが表示されます。そのフォームで OK を押すと、データが検証され、すべてが OK であれば、オブジェクトがグリッド データソースに追加されます。グリッド行をダブルクリックすると、選択したエンティティ インスタンスを編集するための同じフォームが表示されます。
短所: エンティティごとに 2 つのフォームを作成する必要があります。
3) 別の可能なオプション:
グリッドも読み取り専用モードです。グリッド内の行にフォーカスすると、グリッドの上のフィールドが入力され、ユーザーが編集できるようになります。[追加] を押すと、新しいエンティティ インスタンス (オブジェクト) が作成され、グリッドのデータソースに追加されます。次に、新しい行がフォーカスされ、グリッドの上のフィールドがクリアされ (ここではバインディングが役立ちます)、カーソルが最初のフィールドに配置され、ユーザーは次のことができます。入力を開始します。
グリッドとフィールドを同じフォームに配置するのに十分な場所がない可能性があることを除いて、ここに短所はありません。私はこのオプションが好きですが、どこかで見たことを覚えていません。
プログラムのユーザーに、どちらの GUI が適しているかを判断するのを手伝ってくれるように頼もうとしましたが、典型的な答えは、「どちらのオプションも問題ないと思います」または「わかりません。どちらが優れているかはあなたが決めてください」です。
ここで、GUI 設計の経験がある人に次の質問をしたいと思います。
1) 普段どのオプションを使用しますか? たぶん別のもの(上には表示されていません)?
2) 実装 (データセット/カスタム ビジネス オブジェクト/バインディングなど) についてもいくつか述べていただければ幸いです。
3) 私のオプションのどの短所に気付きましたか?
4) この件に関して私が読むことができるものについて何かアドバイスはありますか?
ご協力ありがとう御座います!