2009-07-28 42 views
3

非常に基本的なLotus Notesデータベースアプリケーションから移植されたWindowsフォームアプリケーションを開発しています。例として、「ジョブ」テーブルには「部品」テーブルと多対多の関係テーブル「Job_Parts」とJobIDとPartIDがあります。Windowsフォームの多対多の関係のデータ入力

新しいジョブレコードを追加するときは、ユーザーがパーツリストから選択するための入力方法が必要です。これはチェックボックスリストであり、ユーザーはジョブ内の部品をすばやくチェックすることができます。私はasp.netで同様のことを行い、チェックボックスのリストを "Parts"テーブルにバインドしてから、選択内容をキャプチャして、新しいレコードを多数のレコードに追加して動作させる必要があります。編集するジョブレコードをプルアップするとき、多くの関係レコードで選択されたパーツレコードをチェックボックスリストにバインドする方法について助けが必要です。

2番目の要求は、Lotus Notesのチェックボックスリストコントロールと比較して、Windowsフォームで一致するものではない可能性があります。 ロータスノートのコントロールでは、ユーザーはチェックボックスのリスト内でキーストロークを簡単に使用できます。パートの最初の2文字を入力すると値が選択され、その後にカンマを押すと次のパートの入力が開始されます。

このようなことを誰かが見たり、キーボードを使ってすばやく他の方法で多くのデータを選択したりしています。

私はこれを提出しようとしています...私は質問にタグを追加し、これが私が必要とすることを行う完璧で迅速な方法であることを認識し始めます。あなたは私にいくつかのポインタを送ることができる場合、誰もwinformsで同じことをしましたか?

+0

を使用すると、多対多のデー​​タバインディングまたはカンマでタグを追加する方法について助けが必要ですか?私は試して答えようとするとどんな疑問があるのか​​混乱しています。 –

答えて

0

これを実装する標準的な方法は、マスター/ディテールフォームと呼ばれます。これを検索すると、多くの実装が見つかります。

ジョブのマスターグリッドとパーツの2番目の詳細グリッドがあり、ジョブをクリックするとすべてのパーツが表示されます。行の追加、編集、および削除には、標準のWinFormsグリッドコントロールを使用できます。

キーボードのナビゲーションを許可する場合は、Tabキーを使用してグリッドを切り替えることができ、矢印キーを使用してグリッドの行と列を切り替えることができます。

チェックボックスのようなインターフェイスを使用する場合は、各ジョブのすべての可能な部分を一覧表示し、スペースバーを使用して必要な部分をチェックすることができます。

+1

ありがとうございました...私は部品リストのためにwinformsグリッドを使ってみましたが、動作します。しかし、ユーザビリティの観点からは、多くのことが望まれています。私は実際にスタックオーバーフローのタグ入力のようなものを実装することを検討しています。これは、ユーザーが部分的に型を入力することを可能にします。私はこれに似た何かを使っています。 http://stackoverflow.com/questions/133049/control-for-tags-with-auto-completion-in-winforms – studiothat

1

ない私が口頭でこれを説明するが、ここに行くことができることを確認して:フォームの上部に

は、ユーザーが間を移動することになると思うどのくらいの頻度に応じて、ジョブ、おそらくコンボボックスまたはリストボックスのリストでありますジョブ。

以下、左側は利用可能なすべての部分のリストボックスです。右側には、現在ジョブに関連付けられている部品のリストボックスがあります。これら2つのリストボックスの間に「ADD >>」ボタンと「< < REMOVE」ボタンがあります。各パーツの1つのみがジョブごとに許可されている場合は、2つのリストボックスの間でパーツを移動できます。ユーザーがパーツを追加すると、パーツのリストから削除され、ジョブパーツのリストに表示されます。ユーザーがパーツを削除した場合は逆にします。

この方法では、Controlキーを押しながら複数のパーツを選択して追加または削除することができます。

希望があります

0

私は種子検査会社で働き、私たちは同じデータフォーマットを持っています。これは私たちのやり方です。

新しいジョブを追加:

私はあなたの部品のリストについては、(のBindingSourceオブジェクトを使用して)データバインドリストボックスを使用し、上部にあるフィルタボックスを持っているでしょうthusly

--------------------- 
| Filter (Text Box) | 
--------------------- 
| List Box   | 
|     | 
|     | 
--------------------- 

することができますBindingSourceオブジェクトのFilterプロパティを使用して、リストボックスに表示されるリストをフィルタ処理します。次に、ユーザーがパーツを選択して、選択したパーツを含む別のリストボックスに追加できるように、その近くに「追加」ボタンがあります。おそらくListBoxのDisplayMemberプロパティとValueMemberプロパティを使用して部品を追加するほうが、索引が大いに役立つわけではなく、文字列を比較することはそれほど価値がないため、より簡単になります。

私は、このソリューションは、両方のあなたの要求に答えるべきだと思います。