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" の値には名前が 1 つしかありません。したがって、「FirstName」には NAMES[0] のみを記述し、「LastName」には空白のままにする必要があります。

しかし、しかしそれは停止し、コードの最後の行が「IndexOutOfRangeExceptionは未処理でした」であることが示されました

また、"Fullname" の値に 2 つの名前が含まれている場合にのみうまく機能します。

"Fullname" の値に NAMES[1] がなくても停止しないようにするにはどうすればよいですか?

私がやろうとしているのは、「Fullname」の値を「FirstName」と「LastName」に分割して転送することです。しかし、「Fullname」の値に姓が含まれていない場合があります...そして、プログラムが停止し、「IndexOutOfRangeException was unhandled」と表示されます

私を助けてください!変数 NAMES[1] が "Fullname" に存在しない場合、この種の状況に対処するために多くの IF ステートメントを作成しましたが、それでも ""IndexOutOfRangeException が処理されませんでした" と表示されます。

4

1 に答える 1

3

分割によって ore または 2 つの値が得られたかどうかを確認するだけです。

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

もちろん、これは次のような問題がないことを前提としています。

  • ユーザーは何も入力しませんでした
  • ユーザーが 3 つ以上の名前を入力しました
  • ユーザーが使用できない文字を入力しました

入力検証をより慎重に計画して、他の奇妙な動作を検出する必要があります。

于 2012-04-15T17:35:59.287 に答える