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 文件夹中的 .exe 将在运行某些功能时终止。

谁能告诉我为什么以及如何详细解决它?请。如果您有任何关于将 vb 转换为 vb.net 的好网站,请与我们分享 =]

4

1 回答 1

0

VB6 允许您相当容易地制作控件数组,RadioButtonArray 是一种构造,可以将控件数组转换为可以以相同方式使用的东西。我一直发现通过创建控件类型的空数组并使用 Tag 属性作为索引然后将控件分配给新数组来更容易读取结果。

此示例假定您有 4 个 RadioButtons,它们的 Tag 属性设置为 0 到 3。

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

通用事件处理程序示例

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 回答