マイクロソフトのサイトをクルクルしてたら見つけたヘンなFAQ。どうも定期的にやっているチャットの中から有益と思われるものを抜き出して掲載してるみたい。
内容は日本のMLで流れてくる、びっくりするくらい基礎的なものはないものの、どーでもいいような質問まで、それこそ玉石混交っぽい。日本も米国も大して変わらないなあ、とかエラソーに思ったりしつつ。
というわけで、超意訳版。
[VB6.0からVB.NETへのアップグレード]
Q:Access 2000/VBAで作ったアプリケーションをVB.NETにアップグレードって、できる?
A:VBAからVB.NETへのサポートはしてないんだよ。サポート対象はVB6.0からのアップグレードだけ(VBAとVB6.0はエンジンが異なるからね)。VBAからVB6.0に書き直し、そこからVB.NETにアップグレードするよりは、最初からVB.NETに書き直したほうがラクチン。
NOTE:VB.NET 2003にはVB6.0のコードとVB.NET 2002のコードをコンバートしてくれるツールが付属している。本当はVBAのコードもコンバートしてくれるといいんだけど。
Q:マルチオブジェクトプロジェクトをアップグレードするには?
A:一番いいのはイテレート。この場合、最初に実行ファイル(EXEファイル)をアップグレードして、COMインターロップを使って他のコンポーネントで動作を確認。次に、プロジェクトのコンポーネントをアップグレードしてゆく。
Q:VB.NETかVB6.0向けのWebブラウザコントロールに関するドキュメントはどこにあるの?
A:VB.NET向けのWebブラウザコントロールは提供されてないんだ。けど、VB6.0で提供していたコントロールを使用できるよ。Webブラウザに関するドキュメントはここにある。
Q:リストボックスと配列に関する最初の質問ってどうよ。
A:んー、われわれはWindows Formsのコントロールのエキスパートじゃないからなあ。「このリストボックスはVB6.0からVB.NETにアップグレードしたものなの?」とか「これって前のコントロールのアップグレード版?」とかかな。
Q:VB6.0でできていたことがVB.NETではできなくなっているんだから、私に言わせりゃ改悪だと思うんだけど。
A:リストコントロールやデータソース、プロパティに関してはMSDNのヘルプを見たほうがいいよ。さまざまな例ならここにある。
Q:VB6.0ではsstabを使っていたけど、.NETではタブコントロールを使っている。でも、タブの背景色に独自の色を設定する方法が見つからないんだよ。
A:申し訳ないんだけど、それはサポートしてないんだ。背景色プロパティはクライアントエリアにのみ作用するからね。たぶん、サードパーティ製のタブコントロールではサポートしているものがあるかもしれない。
Q:さっきのリンク先に行ってみたのだけど、私がクラスの変わりにUDTを使用してやってることと、どう違うんだかわかんないんだけど。
A:どうも配列オブジェクトからToStringを使おうとしてるみたいだけど、そのオブジェクトのフィールドから提供されたToStringをオーバーライドしているいろんな例からすぐわかると思うんだよね。
Q:TreeViewコントロールに関する質問。このコントロールのバックグラウンドにイメージを設定することはできまるの? 試してみたけど、ノードは白い矩形イメージの上に作られるんだ。どうすればいい?
A:詳しくはないんだけど、TreeViewコントロールが背景のイメージをサポートしてるって、ちょっと信じがたいな。プロパティウィンドウにはそういう欄はないよね。それはクラスのメンバだけど、コントロールから継承されてる。描画に関する問題は、この先のバージョンでノードのオーナードローの能力があがって、フィックスするんじゃないかな。たぶんだけど。
Q:コレクションクラスのNewEnumにコードを書き換える際、なんでアップグレードウィザードはenumuratorの行をコメントアウトするのかね。なんか手立てはある?
A:アップグレードウィザードは、よりコンパイルしやすくするプロジェクトを作成することと、できるだけVB6.0のプロジェクトと互換性のあるコードをにするためのもの。どんな場合でも完全とはいえない。で、わたしとしてはVB.NETのコレクション基本クラスを使って、調べながらでもコレクションクラスを書き直すことを勧めるね。実装は簡単だし、そうすればのちのちシアワセになれる。
ちなみにオリジナルは以下のMSDNのサイトで読める。誤訳/誤認などの指摘を待つところだけど、はたしてオリジナルと読み比べてくれる人がいるのかどうか。。。