我正在用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接受为数据源”
如何解决此问题?
谢谢。
答案 0 :(得分:0)
在C ++ CLR中,您只需要编写:
comboBox_header_predefinedtypes->DataSource = nullptr;
你不需要写
comboBox_header_predefinedtypes->Items->Clear();
在删除DateSource后删除项目。