投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/4/24 11:44:33
> <旧バージョンとの互換性維持に関して>
> こういうものを使用するほうが良いのでしょうか?
使わないで済むなら、使わない方が良いでしょう。
旧バージョンの開発スタイルを使い続けたい場合には役に立ちますが、
多くの場合、この互換DLLを参照設定すらする必要はないと思います。


> 多分、VB2008も今後、変更されるでしょうし、
2010 もダウンロードできます。まだ、CTP 版ですけれどね。
https://connect.microsoft.com/VisualStudioJapan/content/content.aspx?ContentID=10212


> BASICの言語の変更は今後も続くのでしょうか?
かつて、「QuickBASIC の登場時」「VB1 の登場時」「VB.NET の登場時」には、それぞれ
大きな変化がありました。「.NET の次」が来た時には、また大きな変化があるでしょう。

また、VB.NET 系の中でも、バージョン毎に進化は続いていきます。
次のバージョンVB10(Visual Basic 2010)で予定されている機能については、
そのうちの幾つかが既に情報公開されています。

そして、今はまだ、詳しい内容について述べることは許されていませんが、
さらにその後の VB11 についても、幾つか検討されている言語面での新機能があります。


> コントロール配列化に関して、参考に頂いたホームページの内容もですが、msdnで調べた時にも
> 思ったのですが、コントロール配列をプログラムの中で、作成する方法は載っていますが、
旧VBのコントロール配列について言えば、デザイナで設定できるという利点はありますが、
必ずしも使いやすい物では無かったかと思います。たとえば、コントロール配列は
WithEvents と併用できないというデメリットを抱えていましたし、必ず、雛型として
最低 1 個のコントロールを、画面に用意しておかなければなりませんでした。

先に紹介したサイトに書かれている方法であれば、コレクションの仕様は
自分で自由に決定できるため、仕様面での制限を受けることはなくなります。あとは、
その機能を自力で作成していく時間と力量があるかどうかですけれどね。


> デザイン画面で作成したコントロールを配列化(正しくはコレクションにする?)方法は載ってないようです。
配列やコレクションの使い方はわかりますよね。
コントロールの配列であろうと、数値の配列であろうと、考え方は一緒ですよ。

TextBox のコントロールを配列で管理したいなら、
 Private TextBoxes() As TextBox
などという宣言をしておけば良いでしょうし、コレクションに格納したければ、たとえば
 Private TextBoxes As List(Of TextBox)
などと書けるでしょう。

こうして用意したコレクションには、デザイナで作成したコントロールを
 TextBoxes.Add( TextBox1 )
 TextBoxes.Add( TextBox2 )
と追加していく事もできますし、
 Dim txt As New TextBox()
 Controls.Add( txt )
 TextBoxes.Add( txt )
のように、デザイナを使わずに自作したコントロールを追加する事もできます。

また、デザイナで作成したコントロールを列挙したいのであれば、先にご自身が
書かれていたように、Controls から取り出すこともできますし、あるいは
先の例のように、拡張メソッド(あるいは LINQ)による抽出も可能かと。


> shapeが無くなり、直線を引くのにソフトを組まなければならない点にがっかりしました。
直線は、Shape コントロールではなく、Line コントロールですよ。

これらの廃止に関する御叱りは多かったようで、その後、「Visual Basic Power Pack」として、
LineShape コントロール、OvalShape コントロール、および RectangleShape コントロールが
追加されましたね。
http://msdn.microsoft.com/ja-jp/vbasic/ms789080.aspx
http://msdn.microsoft.com/en-us/vbasic/bb735936.aspx


> それらのコントロールをArrayListにて
ArrayList でも良いですが、ジェネリック コレクションの方が便利だと思います。


> Addすれば、コレクションとして扱えるのでしょうか?
使えます。そしてそれは、VB5 の頃であっても一緒ですよね。

VB5/VB6 であっても、
 Private col As Collection
に対して、
 Set col = New Collection
 col.Add Text1
 col.Add Text2
 col.Add Text3
のように登録して、非コントロール配列をコレクション管理することが可能です。