2015-09-29 4 views
1

Используя визуальную студию здесь. В коде ниже вы можете увидеть строку быть расколом, и я хочу положить каждое раздвоение строку в новой строке, но программа происшествий не создает новую строку, и я получил сообщение об ошибке:C++ добавить новую строку в таблицу представлений datagrid

Exception thrown: 'System.ArgumentOutOfRangeException' in mscorlib.dll Additional information: Index was out of range. Must be non-negative and less than the size of the collection.

String^ text = textBox1->Text; 
cli::array<String^>^ part = text->Split('.','?','!'); 
for (int split = 0; split < part->Length; ++split) 
{ 
    datagrid->Rows[split]->Cells[3]->Value = part[split]; 
} 
+0

с, которого не дают никаких сообщений об ошибках, я думаю, следующие вопросы будут ездить к ответу .. Где вы инициализируете переменную «split»? Имеет ли он действительное начальное значение? Почему у вас есть int i и сгруппированы в цикл for? какой из них является индексной переменной? Вы создали datagrid и инициализировали его? Вы выделили достаточно памяти для datagrid-> Rows? –

+0

Я исправляю код и добавляю отсутствующее сообщение об ошибке. –

+0

так что теперь вы должны ответить на следующие вопросы. Вы создали datagrid и инициализировали его? Вы выделили достаточно памяти для datagrid-> Rows and Cells? как правило: всегда проверяйте любой указатель перед вызовом его -> operator и всегда будьте уверены в размере массива перед тем, как присоединить его к оператору [] (сообщение об ошибке дает нам этот подсказку) –

ответ

0

Вы, вероятно, дон «т иметь достаточное количество строк в сетке данных вы так что вам нужно, чтобы добавить их внутри цикла:

String^ text = textBox1->Text; 
cli::array<String^>^ part = text->Split('.','?','!'); 

datagrid->Rows->Clear(); 
for (int split = 0; split < part->Length; ++split) 
{ 
    datagrid->Rows->Add(part[split]); 
} 
+0

Спасибо за ваш ответ –

Смежные вопросы