介紹 最近我在做乙個專案,在乙個對話方塊上有很多控制項。 此對話方塊可在不同的使用者互動和不同的互動上顯示一些 此對話方塊的控制項變為啟用,有些變為禁用。 為此,我必須基於一些變數來決定要啟用哪些控制項 或致殘。如。 隱藏,收縮,複製code
if( m_bbutton )上面的解決方案是好的,但有兩個明顯的問題,在使用上面的解決方案: **複製:有很多**複製可以啟用或禁用各種控制項。**維護:如果將來新增了控制項,那麼我們必須在啟用或禁用控制項的所有函式中更新它的狀態。我們可能會忘記在某些地方更新它。 更有效的解決這個問題的方法是使用。的bitset 類stl。使用bitset類,我們可以儲存乙個由若干位組成的序列, 它還提供了一種簡潔而有效的方式來為一組項(我們問題中的控制項)保留標記。 在演示專案中,有兩個命令按鈕、兩個編輯控制項和兩個組合框,當使用者單擊相應的單選按鈕時,將啟用或禁用它們。最初,所有的控制項都是禁用的。當使用者點選單選按鈕標籤為「啟用按鈕」,然後按鈕將被啟用和其他控制項將保持禁用。其他單選按鈕將以類似的方式工作。現在為了解決這個問題,我們將在對話方塊類中宣告乙個bitset類的物件,如下所示:複製codeelse if( m_bedit )
else if( m_bcombo )
bitset<16> m_bitcontrols;記住要包括以下兩行來使用bitset類: 隱藏,複製code
#include using namespace std;現在為對話方塊上的六個contols定義macos,如下所示: 隱藏,複製code
#define button_one 0上面提到的巨集將用作位集物件中的索引值。 現在在初始化列表中初始化bitset物件如下: 隱藏,複製code#define button_two 1
#define edit_ctrl_one 2
#define edit_ctrl_two 3
#define combo_one 4
#define combo_two 5
m_bitcontrols(0)上面的行將設定所有的16位為o。 新增乙個成員函式,該函式將根據位集物件的位值啟用或禁用控制項。該函式**如下: 隱藏,複製code
現在,在其中乙個用於單擊單選按鈕的處理程式函式中新增以下**。隱藏,複製code
m_bitcontrols[button_one] = true;以上**將設定第一和第二位,並重置最後四位。在那之後 執行可使能或可使能功能。這段**將啟用兩個按鈕控制項,並禁用兩個編輯控制項和兩個組合 盒子。其他兩個處理程式參見本文的**。 該技術為上述兩個問題提供了解決方案: **複製:現在只有乙個函式擁有禁用控制項的**。**維護:因為只有乙個函式,所以**維護不是乙個大的任務。 本文**於:m_bitcontrols[button_two] = true;
m_bitcontrols[edit_ctrl_one] = false;
m_bitcontrols[edit_ctrl_two] = false;
m_bitcontrols[combo_one] = false;
m_bitcontrols[combo_two] = false;
enableordisablectrls();
更有效的C
從不可缺少的有效的c 的作者,這是提高你的程式設計和設計的35個新方法。基於多年的經驗,邁爾斯解釋了如何編寫軟體,更有效更高效,更強大,更一致,更輕便,更可重複使用的。總之,如何編寫c 軟體,只是普通的更好。更有效的c 包括 全面的描述的先進技術,採用c 專家,包括放置新的,虛擬的構造器,智慧型指標...
更有效的使用Visual Studio
工欲善其事,必先利其器。雖然說vim和emacs是神器,但是對於使用visual studio的程式設計師來說,我們也可以通過一些快捷鍵和潛在的一些功能實現脫離滑鼠寫 提高工作效率,像使用vim一樣使用visual studio。當然,如果想真正像使用vim一樣使用visual studio可以安裝...
禁用或啟用DropDownList的Items
此篇算是對重構公升級。因為需要不但能禁用還能可以啟用dropdownlist的items。為了不想使用者寫太多 insus.net寫了乙個類別,並讓它繼承了system.web.ui.webcontrols命名空間下的dropdownlist.可從下圖看到insusdropdownlist例項化並傳...