我的任务是在tbUnos
和label1
中输入一些文字,打印出字符串的前两个字母。我刚刚开始学习Visual C ++,我正在努力解决问题。
private:System :: Void textBox1_TextChanged(System :: Object ^ sender,System :: EventArgs ^ e){
String^ sUnos = tbUnos->Text; label1->Text = sUnos->String::Substring(1,2);
}
构建和运行时,我的程序崩溃了。 请帮助:)
答案 0 :(得分:0)
首先,这不是C ++,这是C ++ / CLI,它是一种针对CLI的语言扩展。
其次,当你这样做时,我不明白你的程序如何编译sUnos->String::Substring
。但是,您的代码应如下所示:
String^ sUnos = tbUnos->Text;
if(!String::IsNullOrEmpty(sUnos))
label1->Text = sUnos->Substring(1,2);
编辑:请注意,此代码位于TextChanged
事件的处理程序中。这意味着每次文本更改时都会调用它,就像每次按键盘上的键一样。当您在文本框中键入第一个字母时,tbUnos->Text
将包含单个字符,并且Substring(1, 2)
将抛出,因为没有索引1可以开始。来自MSDN:
ArgumentOutOfRangeException
startIndex
加length
表示不在此实例中的位置。