做程序主要體現的是細節,細節方面做的好,用戶會覺得你的軟件比較專業。良好的架構與設計模式可以使維護方便。在用戶這邊,要花一些心思琢磨用戶的想法。有時候用戶比我們的界面設計還專業,用戶有很強的行業知識,他見識過的同行業的軟件比我們多。下面的這幾點界面設計的體會和經驗,來自於用戶,在這里與大家分享。
1 如果要寫數據項到注冊表中,最好以加密的形式保存
雖然.NET提倡的是XCOPY,但有時還是需要寫一些必要的信息到注冊表中,以減少用戶的配置出錯的可能性。比如,自動更新功能中,需要把自動更新的網址寫到注冊表中。ASP.NET Web程序如果不使用默認的80端口,也推薦在安裝程序時把Port寫到注冊表中。對於需要用戶反饋的程序,一種默認方法是把用戶的feedback內容發送到郵箱中,這時需要提供郵箱的注冊用戶名和密碼,這種情況是必須要加密的。
有時候不小心看了一下自己的注冊表(regedit)內容,也是慘不忍睹,大量的程序都會寫數據項到注冊表中。
2 界面划分的基本原則是信息分類,將同類的信息放在一起,集中顯示。
這是物料主檔的功能的界面,先分大類,用Tabcontrol分開,基本信息,環保指令,包裝規格,計划數據,附件信息。大類里面再小的類別,用GroupBox分開,比如控制點,規格。
規格這個地方,使用了ComboBox,這個有待於商量。當選擇的數據項比較多時,應當使用ComboBox,數據項比較少時,我以為用RadioButton要合適一些,這也取決於空間的大小程度。
這個圖片中有兩組Item Type,上面一組是ComboBox的翻版,下面一組對文字進行了簡化調整。
使用ComboBox的好處是,當它的item發生變化時,界面不需要變動,而RadioButton做不到這一點,也許這是選擇ComboBox的一個很好的理由。
對信息分類導向的界面設計國中,菜單項的深度也應該盡量保持在三層以內,對相同的功能進行分類。請看下圖
只用了二層,相同的功能菜單里面,還可以用分割符號分開,以增加可讀性。
3 界面中的名詞選擇盡量選擇專業的詞匯,避免通用的詞匯。比如以前我做ERP系統控制面板,總會加上Managment這個詞語,如Sales Management/Purchasing Management以表達銷售管理,采購管理,Management這個詞語應該去掉。在很多信息分類的TabControl中,通常第一個tab page的名字叫General或者上面例子中的Basic Information,或General Information,當系統中有多個這樣的界面布局時,應該保持一致。比如上面的物料主檔用了Basic Information,其它的地方,在基本信息的tab page中也應該用Basic Information。舉例說明
采購收貨的界面,第一個tab page使用General Information。
物料清單的界面,第一個tab page也使用了General Information。
4 界面設計時字體的選擇。
以我的選擇,功能界面中使用Microsoft Sans Serif, 8.25pt字體。狀態欄(status)和菜單(menu)使用默認的Segoe UI, 9pt。對於功能界面,除了規定程序員在設計時使用指定的字體外,還在運行時,循環遍歷一下界面中的界面控件,對不是標准字體的控件予以調整。字體統一,界面才看起來整潔,美觀。
不推薦在控件中使用特殊的字體,盡管你可以在部署的時候把字體也拷貝到目標機器中。Crystal Report的報表中,需要使用一些特殊的字體,運行報表前應該檢測字體是否存在。比如你可以把字體以嵌入的資源的方法嵌入到程序集中,如果目標機器的指定的字體不存在,可以從程序集的資源中釋放字體到字體文件夾中。
5 對可能造成數據無法恢復的操作必須提供確認信息,提供用戶放棄選擇的機會。比如刪除數據,退出功能時沒有保存數據,耗費很長時間的MRP運算。這在開始操作前,要給用戶有反悔的選擇。
對於刪除確認,有一種情況,就是對用戶的設計予以認可,充分信任。比如用戶在設計菜單界面時,要刪除一條菜單,這時,不應該彈出確認刪除的對話框。Visual Studio中刪除一項MenuStripItem時,沒有要我們確認刪除。
正准備Delete菜單項中的New項,Visual Studio會認可你的操作,沒有要你確認之后再刪除。
因為這個理由,我在自定義的Menu Designer,Form Designer,Workflow Designer中都實行這個策略,充分信任用戶的操作。