0

私の上司は、VB6 から VB2005 (2.0 .Net フレームワーク) へ、次に VB2010 (4.0 .Net フレームワーク) への異なる変換を私に与えました。

変換しているときに、VB2005 から VB2010 にこの警告が表示されました。

警告 'Microsoft.VisualBasic.Compatibility.VB6.RadioButtonArray' は廃止されました: 'Microsoft.VisualBasic.Compatibility.* クラスは廃止され、32 ビット プロセス内でのみサポートされます。http://go.microsoft.com/fwlink/?linkid=160862 '.

警告 タイプ ライブラリ インポーターは、メンバー 'DISPPARAMS.rgdispidNamedArgs' の署名を変換できませんでした。

警告 タイプ ライブラリ インポーターは、メンバー 'DISPPARAMS.rgvarg' の署名を変換できませんでした。

無視しても、プログラムはデバッグ モードで正常に実行できますが、.exe として実行すると、関数を実行すると bin フォルダーで終了します。

その理由と解決方法を詳しく教えてもらえますか?お願いします。vb から vb.net への変換に関する良いウェブサイトがあれば、私たちと共有してください =]

4

1 に答える 1

0

VB6 では、コントロール配列をかなり簡単に作成できました。RadioButtonArray は、コントロール配列から同じ方法で使用できるものへの変換を可能にする構成体でした。コントロールのタイプの空の配列を作成し、Tag プロパティをインデックスとして使用してから、コントロールを新しい配列に割り当てることで、結果を読みやすくすることが常にわかっています。

この例では、Tag プロパティが 0 から 3 に設定された 4 つの RadioButton があると想定しています。

Public Class Form1

    Dim rbArray(3) As RadioButton


    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        For Each cntrl As Control In Me.Controls
            If TypeOf cntrl Is RadioButton Then
                Dim rb As RadioButton = CType(cntrl, RadioButton)
                rbArray(CInt(rb.Tag)) = rb
            End If
        Next
    End Sub
End Class

一般的な EventHandler の例

Private Sub RadioButton_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged, RadioButton3.CheckedChanged, RadioButton4.CheckedChanged
    Dim rb As RadioButton = CType(sender, RadioButton)

    Select Case CInt(rb.Tag)  'Note use of Tag instead of Index
        Case 0

        Case 1

        Case 2

        Case 3

    End Select
End Sub
于 2012-07-06T15:53:33.493 に答える