2009-05-28 65 views
0

我正在用一些數據輸入表單寫一個非常簡單的WinForms應用程序。但在用戶獲得這些表單之前,她必須選擇要採取的行動(即可能在輸入搜索查詢後打開哪個表單)。由於此應用程序是重寫舊版自定義DOS FoxPro應用程序,因此用戶希望UI儘可能與舊版應用程序相似(簡單閱讀)。 (請注意我不想討論如何說服客戶遷移到一個更現代的UI)WinForms中的簡單菜單式導航

現在,用戶界面應該是這樣的:

│--------------│ 
│ Customers >> │ │-----------------│ 
│ Invoices  │ │ Find customer │ 
│ -------------│ │ Create new  │ 
│ .. etc..  │ │ Delete customer │ 
│ -------------│ │-----------------│ 
│ Exit   │ 
│--------------│ 

的菜單必須是相當大,並在屏幕(形式)的中間。這意味着經典的MenuStrip不存在問題。我應該使用適當的項目動態創建ListBox?你會如何處理這個問題?我已經有了存儲在對象中的導航結構,我正在尋找如何向用戶呈現導航UI的建議。

此外,在這種情況下,鍵盤輸入是必不可少的,比鼠標交互更重要。

回答

0

我想你可以用ToolStrip控件來做到這一點。將Dock = None和LayoutStyle = VerticalStackWithOverflow設置爲開始。

1

我當時的一箇舊項目是將DOS(Clipper)應用程序轉換爲Windows。我們決定對類似的東西,更多的網絡感覺(單擊超鏈接):

- - - - - - - - - - - - - - - - - - - - - - - 
| Bolded Group Header | Bolded Group Header | 
| Item Link 1  | Item Link 3  | 
| Item Link 2  | Item Link 4  | 
- - - - - - - - - - - - - - - - - - - - - - - 

當雙擊組頭,該組中的所有鏈接將會在後臺一次被打開。此外,通過工具欄選擇應用程序的上下文(如選定的客戶),因此總是顯示當前客戶的詳細信息。從技術上講,我們使用TPanel的後代控件(這是使用C++ Builder中的VCL)和客戶區標籤,但是你可以很容易地在.NET中做類似的事情。

祝你好運!

編輯:只是爲了更新,因爲你提到的鍵盤支持,面板獲得所有的Windows消息和擊鍵,所以迴應他們取決於你(我們有完整的鍵盤支持,但我們必須自己編碼)。如果你想要的東西只需要工作,而不必編寫任何代碼,我會用ListView而不是ListBox控件。

1

我一直在爲我的windows ui使用Krypton控件套件,它的使用非常簡單,而且工具箱是免費的。它有一些偉大的context menu選項。還有提供一堆菜單選項的導航控件。