DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ボタンの2次元配列

環境/言語:[WindowsXP/VB.NET]
分類:[.NET]

どなたかご教授お願い致します。

下記のようなエラーになってしまいます。

Dim BodyMeiButtons(,) As Button
Dim btnAllBdMeiTemp(,) As ArrayList
btnAllBdMeiTemp(22, 20) = New ArrayList

BodyMeiButtons(i, j) = CType(btnAllBdMeiTemp(i, j).ToArray(GetType(Button)), Button(i,j))

「型 'System.Windows.Forms.Button の 2 次元配列' の値を 'System.Windows.Forms.Button' に変換できません。」
■No21001に返信(yossyさんの記事)
いまいち何がしたいのかがわかりませんが、一つお聞きしたいのが、
型をボタンで2次元配列を素直につくってはいけないのですか?

動的にボタンが増える可能性があるという事ですか?
(たしか固定じゃないとだめでしたっけ?VBの2次元配列は?
最近触ってないので自信がありません・・・)

動的に増えるならDictionaryなどで、縦と横を決めて、
Dictionaryの中にDictionaryをいれて、Button型に縛ってしまったほうが
いい気がします。
■No21004に返信(じゅでさんの記事)
>(たしか固定じゃないとだめでしたっけ?VBの2次元配列は?
>最近触ってないので自信がありません・・・)
VBの配列の要素数は、ReDim ステートメントで再定義できます。
ただし、Preserve を指定してデータを引き継ぐ場合は、最後の
次元のサイズしか変更できません。
[ReDim ステートメント]
http://msdn2.microsoft.com/ja-jp/library/w8k3cys2(VS.80).aspx

初期化されていない(もしくは初期化時の)場合は、要素数を
自由に決めれます。

■No21001に返信(yossyさんの記事)
ってゆーか CType の使い方めちゃくちゃじゃね?
Button(i,j) って何?w
メモ用紙に図を描いて、どこがボタン1個に相当して、どこが
配列に相当するか整理したら?
  • 題名: Re[3]: ボタンの2次元配列
  • 著者: じゅで
  • 日時: 2007/11/16 11:15:17
  • ID: 21008
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No21007に返信(るしぇさんの記事)
> ■No21004に返信(じゅでさんの記事)
> VBの配列の要素数は、ReDim ステートメントで再定義できます。
> ただし、Preserve を指定してデータを引き継ぐ場合は、最後の
> 次元のサイズしか変更できません。

ありがとうございます、最近C#ですっかりわすれておりましたが、
Preserveだと最後しか変更できなかったですね。
これを忘れてたのかorz

> メモ用紙に図を描いて、どこがボタン1個に相当して、どこが
> 配列に相当するか整理したら?

配列にする必要があるかも、私のほうはわかりませんでした。
処理を共通化するだけなら、イベントハンドラを追加するだけでも
いいのかなぁ〜っと思ってみたりもしています。

>yossy様
各ボタンで行う処理が共通化できそうなので、配列にして、ボタンコントロールの
イベントを拾うのであれば、ハンドルを登録するほうがきっとすっきりします。
動的にコントロールを作成するのであれば、作成した時点で、
イベントを登録してしまえばOKなはずです。

イベントなどとは関係なく、ボタンコントロールに作った順でアクセスしたい
などがあればArrayListなどにボタンコントロールを追加しておけば、
順番にアクセスできます。

DOBON.NET | プログラミング道 | プログラミング掲示板