2012-01-16 1 views
2

のサイズよりも小さくなければなりません:インデックスが範囲外です。負でないと、私はこのコードを持っているコレクション

を:示した

ArrayList list = new ArrayList(); 
foreach (DataRow dataR in prenume.Rows) 
{ 
    foreach (var item in dataR.ItemArray) 
    { 
     if (item.Equals(" ")) continue; 
     list.Add(item); 
     if (input_string.Equals(item.ToString()) && list.Count > 0) 
     { 
      label_hello.Text = "Hello, " + list[2]; 
     } 
    } 
} 

私はテキストをクリアしようとしているとき、私はというエラーを取得します

インデックスが範囲外です。負でなく、コレクションのサイズ 未満である必要があります。

その後編集:(input_stringは最初の項目の配列の最初の項目に等しい場合)

 Solution found!I was too tired ... sorry for the question! 

答えて

3

さて、あなたは空のリストから始め、その後、単一の項目を追加した後、あなたが実行するかもしれません:リストで第三項目にアクセスしようとしている

label_hello.Text = "Hello, " + list[2]; 

。アイテムが1つしかないと失敗します。なぜ2をここで選んだのですか? (?。さておき、なぜあなたはジェネリックList<T>型が好ましいArrayListを使用しているとして)

それはあなたがを達成するためにをしようとしているものは明らかではありません - あなたは私たちに多くのコンテキストを与えることができれば、我々は持っていますあなたを助ける良いチャンスです。

編集:コメントから、それはなぜあなたがテーブルに上のすべての値を反復処理したい...私はループがまだ右でない疑いがある、しかし

label_hello.Text = "Hello, " + dataR[2]; 

である必要があり、このようになります。ただ一つの列で(言う)よりもむしろ?

+0

これは、私が書いてほしいarraylistの要素です。 –

+0

@ EmilDumbazu:しかし、リストには* 3つの要素がありません。このステートメントに初めて入るときは、リストには1つの要素しかありません。だから、* 3番目の要素をあなたが望むものにするにはどうしたらいいですか? –

+0

テキストボックスのテキストが変更されたときにコードが実行されます。リストには文字数と同じ数の要素があります。 –

2

もちろん、エラーが発生します。

label_hello.Text = "Hello, " + list[2]; 

が間違っています。 その段階で要素リスト[0]が1つしかありません。あなたは今、[2]

label_hello.Text = "Hello, " + list[2]; 

次の行にあなたのエラーを取得してリストがないので、あなたがそのエラーを取得している理由はあります

+0

私は..参照してくださいしかし、私はそれが働くようにしたい正確に動作します.. –

+3

それが動作するように正確に動作する場合は、なぜあなたは尋ねている?あなたが*その例外を望むなら、なぜそれについて尋ねていますか? –

+1

+1の簡単な**?!**答え... – gdoron

1

、私が言うことができませんまさにあなたがしようとしていることですが、私はあなたが 'item'をある種の文字列にしようとしていて、その文字列の3番目の文字にアクセスしたいという卑劣な疑惑があります。

でも、ユーザーが3文字以上の長さの文字列を入力しようとすることがあることに注意してください。

あなたがしようとしていることの詳細については、お手数でお知らせします。

+0

私はこの問題を解決しました。ありがとう。 –