- - PR -
.NETでのコントロール配列の使用法
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-11-15 17:37
ああそうか、ReDim mHimoku(2) だと 0〜2 になるわけですね。 むむむ、0 がもったいないと感じてしまう MOTTAINAI 主義。
() の位置はどちらでもかまわないです。よねKENさん(と私) がたまたま型の後ろに () を付ける派だっただけかと。 問題はそちらではなくて
宣言時にはまだ cboHimoku1 は Nothing だけれど、Load イベント を実行している段階ではインスタンスが生成されているので その時点で cboH を初期化すれば正しいコントロール配列が 作られるわけです。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||||||
|
投稿日時: 2007-11-16 11:12
すみません、2ページ目なんてものに気付かず返信がおそくなりました・・
cboH() = New ComboBox {cboHimoku1, cboHimoku2, cboHimoku3・・・・} ロードイベントの中にこの形で記述すると ()の部分で 「インデックスの数がインデックス付き配列の次元より少ない値です。」 と言うエラーになってインスタンスが生成できないです 上記のコードは何度か試した上で、エラーの回避法がわからず 下記コードの形で上手く行く事を知った次第です cboH = New ComboBox(){cboHimoku1, cboHimoku2, cboHimoku3・・・・} ですので、やはり()は型の後ろにつけないとダメなのではないでしょうか cboHimoku1のインスタンスに関しては、ぽぴ王子さんのご説明のお陰で なんとか理解する事はできました 上記の違いについては、コードのしたい事は理解できるものの 記述法の正誤としか理解できないままですが こういうモジュール変数宣言のエラーの問題も ステップ実行でロードイベントの前からデバッグを始める事が出来るという事に気付かせていただきました (ホント初歩的な事だとは思いますが・・・) ご指摘いただいたように基礎が抜けてる形ですので、細かく説明していただいたお陰で色々と抜けてた穴が埋まって行った様に思います それでもまだまだ穴が開いた状態だとは思うので、合間を見つけては基礎から見直してみようかと思います 度重なるご教授ありがとうございました | ||||||||||||||||
|
投稿日時: 2007-11-16 13:03
うまく行ったようで何よりです(^^)
さて、配列の扱い方ですが、配列を宣言するときは、
と書くことも
と書くこともできます。どちらも文法的に正しい書き方で、 見た目は違いますが同じ意味です。 どちらの書き方をした場合も配列を表す変数はcboHであって、cboH()ではありません。 または、変数cboHの型は「ComboBox()」という型です。
その点を踏まえて上記の文を解釈すると ComboBoxの配列用の変数cboHにComboBox()型のインスタンスをNewして代入する、 という意味です。「ComboBox()」で一語ですので分割はできません。 | ||||||||||||||||
|
投稿日時: 2007-11-16 16:43
よねKENさんありがとうございます
型の後ろに()と言うことじゃなくて ComboBox()で型なんですね、イマイチ捕らえ方が判ってなかったのですが お陰できちんと理解するに至りました 理解すれば今までのエラー表示も納得が行きます 解決策だけでなく、ご指導まで頂きまして大変助かりました こういう理解をきちんとしないまま 中途半端に作業に当たると、様々な問題が発生してきますね・・・ また1つ理解できた事が増えたので、こうして1つ1つの事を探りながら進めて行こうと思います ご指導ありがとうございました |