0

リストとそのアンチリストを維持するために 2 つの devExpress checkedComboBoxes (ボックス) を使用しようとしています (つまり、両方のコンボボックスに同じ項目があり、リストの 1 つだけでチェックする必要があります)。

私はC++/CLIを使用しているので、処理するボックスごとに

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

を呼び出す

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;

}

devExpress のドキュメントでは、単純にボックス リストを反復処理してアンチ リストを !Checked に設定するのではなく、編集値を設定するように指示されているようです。

ただし、機能していないようです (正しいアイテムがテキスト ウィンドウに追加されますが、何もチェックされません)。さらに、イベントが終了した後にボックスを見ると、テキスト ウィンドウの文字列値が正しい (選択したものを反映している) ことがわかりますが、ボックスを開くと、すべてのアイテムが選択されています。

私が試すかもしれない提案はありますか?

代わりに、各アイテムの CheckState::Checked を設定する方が良いですか?

ありがとう!

4

1 に答える 1

0

DevExpress サポートと話をするのに時間を費やしました。簡単に言えば、これは機能するはずですが、私たちには機能しません。あなたのマイレージは異なるかもしれませんが、私たちの解決策は、フォーム上の別々のコントロールに 2 つのコンボボックスを配置することでした。

于 2012-04-27T01:40:29.617 に答える