String 简单的子字符串程序不起作用

String 简单的子字符串程序不起作用,string,visual-c++,substring,String,Visual C++,Substring,我的任务是在tbUnos中输入一些文本,在label1中打印出字符串的前两个字母。我刚开始学习Visual C++,我正在努力解决问题。 private:System::Void textBox1\u TextChangedSystem::Object^sender,System::EventArgs^e{ String^ sUnos = tbUnos->Text; label1->Text = sUnos->String::Substring(1,2)

我的任务是在tbUnos中输入一些文本,在label1中打印出字符串的前两个字母。我刚开始学习Visual C++,我正在努力解决问题。

private:System::Void textBox1\u TextChangedSystem::Object^sender,System::EventArgs^e{

      String^ sUnos = tbUnos->Text;
      label1->Text = sUnos->String::Substring(1,2);
}

当构建并运行时,我的程序崩溃了。
请帮助:

< P>这首先不是C++,这是C++的CLI,它是CLI的扩展语言。 第二,我不明白当你做这个sUnos->String::Substring时你的程序是如何编译的。但是,您的代码应该如下所示:

String^ sUnos = tbUnos->Text;
if(!String::IsNullOrEmpty(sUnos))
   label1->Text = sUnos->Substring(1,2);
编辑:注意,此代码位于TextChanged事件的处理程序中。这意味着每次文本更改时都会调用它,就像每次按键盘上的键一样。当您在文本框中键入第一个字母时,tbUnos->文本将包含一个字符,子字符串1、2将抛出,因为没有索引1开始。发件人:

ArgumentOutOfRange异常

startIndex加上长度表示不在此实例中的位置


我这样做了,运行了这个程序,开始用tbUnos打字。它只允许我输入一个字母,然后就崩溃了。我的屏幕上出现以下消息:mscorlib.dll中发生“System.ArgumentOutOfRangeException”类型的未处理异常。其他信息:索引和长度必须引用字符串中的位置。我理解。我添加了一个按钮,在输入完成后单击。它成功了,我及时完成了我的项目。非常感谢。