1

“IndexOutOfRangeException 未处理”

string ebtocosname;
ebtocosname = webBrowser2.Document.GetElementById("Fullname").GetAttribute("value");
var NAMES = ebtocosname.Split();

 webBrowser1.Document.GetElementById("FirstName").SetAttribute("value", NAMES[0]);

 webBrowser1.Document.GetElementById("LastName").SetAttribute("value", NAMES[1]);     // This line here shows that IndexOutofRangeException was unhandled

“Fullname”的值只有一个名字。因此,它应该只在“FirstName”中写入 NAMES[0],而在“LastName”中留空。

但是但是但是它停止了,它表明代码的最后一行是“IndexOutOfRangeException 未处理”

而且,只有当“Fullname”的值上有两个名字时,它才能正常工作。

我怎样才能使它以这样的方式工作,即使“全名”的值中没有 NAMES[1],它也不会停止?

我要做的是通过将“全名”的值拆分为“名字”和“姓氏”来转移它的值。但有时“全名”的值不包含姓氏......然后我的程序停止并说“IndexOutOfRangeException 未处理”

请帮我!我怎样才能使这项工作,当变量 NAMES[1] 在“全名”中不存在时,我写了很多 IF 语句来处理这种情况,但它仍然显示“”IndexOutOfRangeException 未处理“

4

1 回答 1

3

只需检查您的拆分是否产生了矿石或两个值:

if(NAMES.Length == 2)
   webBrowser1.Document.GetElementById("LastName").SetAttribute("value", NAMES[1]);     

当然,这假设您没有其他问题,例如:

  • 用户没有输入任何输入
  • 用户输入了两个以上的名字
  • 用户输入了一些不可接受的字符

等等

您应该更仔细地计划您的输入验证,以捕捉任何其他奇怪的行为。

于 2012-04-15T17:35:59.287 回答