掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
.net変換時のコントロール配列を継承するには? (ID:120728)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
例えば Command1 をコントロール配列にした以下のソースコードを変換すると [VB6.0] Private Sub Command1_Click(Index As Integer) Debug.Print Index End Sub [VB.NET] Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click Dim Index As Short = Command1.GetIndex(eventSender) System.Diagnostics.Debug.WriteLine(Index) End Sub となります。Command1 のデータ型を確認します。 Public WithEvents Command1 As Microsoft.VisualBasic.Compatibility.VB6.ButtonArray デザイン画面で各ボタンのデータ型を確認します。 Public WithEvents _Command1_0 As System.Windows.Forms.Button Public WithEvents _Command1_1 As System.Windows.Forms.Button Public WithEvents _Command1_2 As System.Windows.Forms.Button …… 新規で[VB.NET]版テキストボックスを貼り付けデータ型を確認します。 Friend WithEvents Button1 As System.Windows.Forms.Button 以上を踏まえて大まかに説明します。変換後の Command1 はボタンではありません。 ボタンを複数格納した、変換時に独自に作られたクラスです。 ソリューションエクスプローラの参照設定に Microsoft.VisualBasic.Compatibility という参照設定がなされています。その中で定義されています。この参照を 設定しないと使えません。実体は.NetFramework で用意されたDLLです。 で、新規で貼り付けたボタンを同じように使うには "Windows フォーム デザイナによって生成されたコード" などで設定されている初期設定を自分で設定する必要があり、難易度が 結構高いです。 ここまでで質問に対する直接的な回答は止めておきます。ここから代替案です。 まず、自動変換したコードがそのまま使えなかった事を理解しておられるようです ので、大前提を言っておきます。自動変換したコードは参考にするだけで、 [VB.NET]の流儀にあわせて再度、最初からプログラムし直した方が良いという事です。 上のようなサポート外のコードについて[VB6.0]の動作で対応させるには、 [VB6.0]のDLLを参照して常にワンクッション置いた回りくどいコードを 書く必要があり、かなりの知識を要求されます。結果的に 『こんなことなら最初から作り直した方が早かった』 という結論に99%なります。 >どのようにしたらプロパティにIndexが追加されるのでしょうか? これのみを実現させるなら『継承』という概念があります。難易度は中級。 ヘルプにも載ってますが、サンプルも過去載せました。過去ログ検索『継承』でどうぞ。 >.net変換時のコントロール配列を継承するには? [VB.NET]で、[VB6.0]時代のコントロール配列のような動作を実現するには いくつかの方法があります。 とりあえず過去ログ検索『コントロール配列』でどうぞ。 ↓あわせてご参考下さい。 [Visual Basic .NET におけるコントロール配列の変更点] http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbconcontrolarraychangesinvisualbasicnet.asp [DOBON.NET コントロールの配列を作成する] http://dobon.net/vb/dotnet/control/buttonarray.html
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.