C ++ |如何从组合框中删除数据源?

时间:2019-07-12 07:58:05

标签: c++ visual-studio clr windows-forms-designer

我正在用c ++和CLR在Visual Studio中编写Windows窗体应用程序。 现在,我遇到了以下问题:

我读了一个文件,并将所有重要信息保存在向量中。

第二步,我将所有项目转换为CLR数组,并将此数组设置为DataSource。

array<System::String^>^ PREDEFINED = gcnew array <System::String^>(OP->CIS_Values[OP->selectedCIS]->PREDEFINED_order.size());
                for (int i = 0; i < OP->CIS_Values[OP->selectedCIS]->PREDEFINED_order.size(); i++) {
                    PREDEFINED[i] = msclr::interop::marshal_as<System::String^>(OP->CIS_Values[OP->selectedCIS]->PREDEFINED_order[i]);
                }
                this->comboBox_header_predefinedtypes->DataSource = PREDEFINED;
                this->comboBox_header_predefinedtypes->SelectedIndex = -1;
                delete PREDEFINED;

设置数据源后,必须可以将其删除。在C#中,我可以使用

comboBox.DataSource = null;

但是它在C ++中如何工作?

我尝试了以下情况:

comboBox_header_predefinedtypes->DataSource = NULL;
comboBox_header_predefinedtypes->DataSource = 0;
comboBox_header_predefinedtypes->DataSource = -1;

comboBox_header_predefinedtypes->DataBindings->Clear();
comboBox_header_predefinedtypes->Items->Clear();

我在DataSource之前和之后都使用DataBindings进行了尝试,但是我总是遇到相同的异常:

System.ArgumentException:“复杂的DataBinding将IList或IListSource接受为数据源”

如何解决此问题?

谢谢。

1 个答案:

答案 0 :(得分:0)

在C ++ CLR中,您只需要编写:

comboBox_header_predefinedtypes->DataSource = nullptr;

你不需要写

comboBox_header_predefinedtypes->Items->Clear();

在删除DateSource后删除项目。