2012-04-17 50 views
0

我試圖使用兩個devExpress checkedComboBoxes(盒)來維護一個列表及其antilist(即,兩個組合框中的相同項目,並且它們必須僅在列表中的一個列表中檢查)。DevExpress ExtraEditor checkedcombobox不同步?

我使用C++/CLI,因此每個箱子我處理

EditValueChanged += gcnew System::EventHandler(this, &SelectionControl::exclBox_EditValueChanged); 

由於DevExpress的文件似乎是說來設置編輯值調用,直至

void 
box_ToggleAntibox(
DevExpress::XtraEditors::CheckedComboBoxEdit^ box, 
DevExpress::XtraEditors::CheckedComboBoxEdit^ antibox) 
{ 
using namespace DevExpress::XtraEditors::Controls ; 

cli::array<String ^>^sAnti = gcnew cli::array<String ^>(2*box->Properties->Items->Count) ; 
int ii = 0; 
String^delim = ", "; 
for each (CheckedListBoxItem^ i in box->Properties->GetItems()) { 
    if (i->CheckState==Windows::Forms::CheckState::Unchecked) 
    { 
     sAnti[ii] = i->Value->ToString(); 
     ++ii; 
     sAnti[ii] = delim; 
     ++ii; 
    } 
} 

String^result = String::Concat(sAnti); 
antibox->EditValue = result; 

} 

,而而不是簡單地遍歷盒子列表並將反列表設置爲!Checked。

但是,它似乎並沒有工作(正確的項目被添加到文本窗口,但沒有被檢查)。而且,如果我在事件結束後查看我的盒子,我發現文本窗口中的字符串值是正確的(反映了我選擇的內容),但是如果我打開它,則會選擇所有項目。

有沒有人有任何建議,我可能會嘗試?

是不是更好地設置每個項目的CheckState :: Checked?

謝謝!

+0

如果我使用'antibox-> SetEditValue(result)',那麼既沒有被檢查,也沒有出現在文本窗口中。 – Melanie 2012-04-17 04:13:15

回答

0

我花了一些時間與DevExpress支持交談。簡單的答案是,這應該工作 - 但不適合我們。您的里程可能會有所不同,但我們的解決方案是將兩個組合框放在窗體上單獨控制。