2012-04-15 54 views
1

「IndexOutOfRangeException是未處理」姓「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 

「全名」的值,只有一個在它的名字。所以它只能在「FirstName」中寫入NAMES [0],並在「LastName」上留空。

但卻但卻停了,它表明代碼的最後一行是「IndexOutOfRangeException是未處理」

而且也只運作良好,如果「全名」的價值上有兩個名字。

我該如何讓它工作,即使沒有名字[1]中的「Fullname?」值也不會停止。

我想要做的是通過將「Fullname」的值拆分爲「FirstName」和「LastName」來傳送值。但有時「全名」的價值不包含姓氏...然後我的程序停止並說「IndexOutOfRangeException未處理」

請幫幫我!我如何做這項工作,我寫了很多IF語句來處理這種情況,當變量NAMES [1]不存在於「Fullname」中時,但它仍然顯示「」IndexOutOfRangeException未處理「

回答

3

只是檢查,如果你的分裂產生的礦石或兩個值:

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

當然,這是假設你有沒有其他的問題,如:

  • 用戶沒有輸入任何輸入
  • 的用戶輸入了兩個以上的名字
  • 用戶輸入一些字符無法接受

你應該仔細規劃您輸入驗證功能,發現其他任何奇怪的行爲。

+0

昨天我花了4個小時搞清楚了這一點......你剛纔給我的工作真的很好!如果我能夠及時回顧並發現自己無法弄清楚這一點,我希望在我需要幫助的時候發佈這個問題。非常感謝! – Barry 2012-04-15 17:49:42

+0

@Barry:很高興幫助。如果解決了您的問題,請接受答案。 :) – Tudor 2012-04-15 18:36:27