【发布时间】:2015-09-29 20:21:19
【问题描述】:
在这里使用视觉工作室。在下面的代码中,您可以看到一个字符串是一个拆分,我想将每个拆分字符串放在一个新行中,但是程序崩溃没有创建一个新行,我得到了错误:
抛出异常:mscorlib.dll 中的“System.ArgumentOutOfRangeException”附加信息:索引超出范围。必须为非负数且小于集合的大小。
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];
}
【问题讨论】:
-
既然你没有给出任何错误信息,我想下面的问题会驱动答案。你在哪里初始化变量“split”?它有一个有效的初始值吗?为什么你有 int i 并在 for 循环中拆分在一起?哪个是索引变量?您是否创建了数据网格并对其进行了初始化?您是否为 datagrid->Rows 分配了足够的内存?
-
我修复了一个代码并添加了缺失的错误消息。
-
所以现在,您应该回答以下问题您是否创建了数据网格并对其进行了初始化?您是否为 datagrid->Rows 和 Cells 分配了足够的内存?根据经验:在调用 -> 运算符之前始终检查任何指针,并在使用 [] 运算符访问数组之前始终确定数组的大小(错误消息给了我们这个提示)
-
使用 Visual Studio 表单创建的数据网格。如果拆分长度为 1,则程序可以正常工作,但如果大于 1,则它会崩溃而不创建新行。我不知道还能说什么。也许是因为它是 DataGridViewRow { Index=-1 }
-
或者可能是因为错误 HRESULT : 0x8000000A 我在午餐第一次形成窗口时得到。