2009-07-28 42 views
3

我正在開發一個窗體應用程序,從一個非常基本的蓮花筆記數據庫應用程序移植過來。作爲一個例子,有一個「Jobs」表,一個「Parts」表和一個JobID和PartID多對多關係表「Job_Parts」。Windows窗體中的多對多關係的數據輸入

當添加一個新的工作記錄時,我需要一個輸入方法供用戶從零件清單中進行選擇,我想這是一個複選框列表,並允許用戶快速檢查工作中的零件。我在asp.net中做了類似的事情,並將複選框列表綁定到「Parts」表,然後捕獲選擇並將它們添加到新的多對多記錄中。在提取工作記錄進行編輯時,我需要一些幫助,然後如何將多個關係記錄中選擇的零件記錄綁定到複選框列表。

與Lotus notes notes複選框列表控件相比,第二個請求可能不是可以在windows窗體中匹配的東西。 在蓮花筆記控件中,用戶可以輕鬆地使用複選框列表中的按鍵筆畫,方法是輸入部件的前幾個字母並選擇一個值,然後按逗號可以讓他們開始輸入下一部分..等等。

有沒有人看過類似的東西,或者任何其他方式來快速(用鍵盤)選擇多對多的數據。

由於我即將提交此...我開始爲問題添加標籤,並意識到這是完成我所需要的完美和快速的方法。有沒有人在WinForms中做過同樣的事情,如果有的話,你可以給我一些指針嗎?

+0

你需要關於多對多數據綁定或用逗號添加標籤的幫助嗎?我很困惑,試圖回答哪個問題。 – 2009-11-02 17:07:17

回答

0

執行此操作的標準方法稱爲主 - 明細表格;如果你搜索這個,你會發現很多實現。

在你的情況下,會有一個主作業網格和第二個零件細節網格,點擊作業將顯示所有部件。您可以使用標準的WinForms網格控件來添加,編輯和刪除行。

如果您想允許鍵盤導航,您可以允許使用Tab切換網格,以及使用箭頭鍵在網格的行和列之間切換。

如果您想使用類似複選框的界面,您可以列出每個作業的所有可能部件,並使用空格鍵檢查所需部件。

+1

謝謝你的回答...我嘗試使用winforms網格的零件清單,它確實有效。但是從可用性的角度來看,它還有很多不足之處。我實際上希望實現更像Stack Overflow中的標籤輸入,允許用戶部分鍵入一個部分,然後出現。我將使用類似的東西。 http://stackoverflow.com/questions/133049/control-for-tags-with-auto-completion-in-winforms – studiothat 2009-07-28 20:09:29

1

不知道我可以口頭描述這一點,但這裏有雲:

在表單的頂部是工作,也許一個組合框或列表框,這取決於你如何往往認爲用戶會之間進行導航列表工作。

在下面,在左側是所有可用部件的列表框。在右邊,是當前與作業相關的部分的列表框。在這兩個列表框之間,一個「ADD >>」按鈕和一個「< < REMOVE」按鈕。如果只允許每個零件中的一個零件,則每個作業都可以在兩個列表框之間移動零件:當用戶添加零件時,它將從可用零件列表中刪除並顯示在作業零件列表中,如果用戶刪除零件,則反向。

該方法允許用戶按住Control鍵並選擇多個部分以立即添加或刪除。

希望幫助

0

我的種子檢驗公司工作,我們有相同的數據格式。這是我們的做法。

添加新任務:

我會用一個數據綁定列表框(使用的BindingSource對象)爲您的零件清單,並有過濾箱體頂部正是如此

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

你可以然後使用BindingSource對象上的Filter屬性來過濾列表框中顯示的列表。然後,我會在其附近有一個「添加」按鈕,以允許用戶選擇零件並將其添加到包含選定零件的另一個列表框中。您可能會更容易使用ListBox的DisplayMember和ValueMember屬性來添加這些部分,因爲索引不會對您有太大幫助,並且比較字符串通常不值得。

我認爲這個解決方案應該同時回答您的請求。