ArrayListの中身がない時。

タグの編集
投稿者 まる  (社会人) 投稿日時 2009/2/2 20:37:27
すみませんが作らせていただきました。

TextBoxの中身をArrayListに追加して、ArrayListの中身をLabelに移したいと思っています。
中身が入っていれば問題はないのですが、TextBoxが何もない状態でArrayListに追加してLabelに表示しようとすると、
「ArgumentOutOfRangeExceptionはハンドルされませんでした。」
「インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。」
とでて、エラーになってしまいます。

どうにかしてArrayListの中身がないときの比較をしたいのですが、
その比較の時点で同じエラーになってしまいます。

CStr(Ar(0))で型変換して比較しているのですが、それがいけないんでしょうか?

調べてみたのですが、まったくわかりません・・・。
よろしければご教授お願いいたします。
投稿者 かずき  (社会人) 投稿日時 2009/2/2 21:40:47
Countプロパティとかで数を確認してはどうですか?
投稿者 刈谷勇  (社会人) 投稿日時 2009/2/2 22:32:03
まるさん、別スレを作っていただいてありがとうございます。

>ArrayListの中身がないときの比較をしたいのですが、
この部分なのですが、ArrayListの要素が無いという意味で書かれていますか?
それとも、要素の中身が無いという意味で書かれていますか?

とりあえず、後者を前提でお話させていただきます。

>「インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。」
とのことなので、値を入力した直後からの動きの確認とエラーになっているAr(0)の中身を確認してみてください。
なお、この辺のやり方はここの初級編の弟5章のあたりを参考にしてもらえればと思います。
また、前者の場合はかずきさんが書かれた方法で確認ができると思います。


あと、ここの入門編・初級編は目を通していらっしゃいますか?
わたしもよく見かえしたりしていますので、初心者のうちは何回も読み直すといいと思います。
また、慣れてきたらよく使うオブジェクトのメンバーを見ると意外な発見があって面白いですよ。
投稿者 刈谷勇  (社会人) 投稿日時 2009/2/3 01:29:50
あと、書き忘れましたが、VB.netのバージョンはいくつでしょうか?
2005以降なら、ArrayListのジェネリッククラスのList<>を使ったほうが型の指定が出来るので楽ですよ。
投稿者 まる  (社会人) 投稿日時 2009/2/3 02:08:44
かずきさん、刈谷勇さん、回答ありがとうございます。

プログラムのほうは、かずきさんのおっしゃったCountプロパティで比較してなんとかなりました!ありがとうございました!
刈谷勇さん、すべてチェックしたところ、テキストボックスから入力されなかったときは何も表示されませんでした。でもオブジェクトから型変換して、なにもなかったのでエラーになったと思います。
バージョンは2005です。

今回のことでさらに「VBって奥が深いんだな」と感じました。これからもがんばりたいです。
本当にありがとうございました!