【问题标题】:Microsoft.VisualBasic.Compatibility.VB6.RadioButtonArrayMicrosoft.VisualBasic.Compatibility.VB6.RadioButtonArray
【发布时间】:2012-07-06 17:36:45
【问题描述】:

我的老板给了我从 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 的好网站,请与我们分享 =]

【问题讨论】:

  • “运行某些功能时终止”?你可以说得更详细点吗?崩溃可能归结于任何事情,甚至是路径,而不一定是 VB6 兼容性框架。您的开发机器是否运行 64 位机器?
  • 你好,我有一些报告功能,当我运行这些功能时,它会显示消息框:xxx.exe遇到问题需要关闭。它在 vb2005 中仍然有效,但在转换为 2010 后,当我使用报告功能时,.exe 无法运行。我还从 PC 读取事件日志。它说 .NET 运行时 4.0 错误报告。

标签: vb.net vb6 vb.net-2010 vb6-migration


【解决方案1】:

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

常用 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

【讨论】:

  • 谢谢,我是初学者,cntrl是什么意思?还有这个错误,我应该删除VB6.RadioButtonArray的错误并像你的例子一样编写一个新代码来解决它吗?
  • 我可能应该写成 For Each cntrl As Control in Me.Controls 我将编辑示例。如果是我,我会做的就是摆脱 VB6.RadioButtonArray 并使用 Control Array 的代替。您必须确保将事件分配给每个单选按钮。我将添加一些代码来显示这一点。没有真正干净的方法可以做到这一点。但它应该解决你的问题
  • 收到了,非常感谢,您对Warning The type library importer could not convert the signature for the member 'DISPPPARAMS.rgdispidNamedArgs'的错误有任何想法吗?
  • @user1506228 这对我来说是新的,看看这个MSDN Forum Link 是否适用。如果没有尝试发布另一个问题并显示抛出它的代码以及正在将哪些类型库导入到您的项目中
  • 非常感谢 Microsoft.VisualBasic.Compatibility.VB6.RadioButtonArray 错误已解决。你有什么想法来解决转换签名吗?现在每当我从bin运行exe并单击报告功能时,它都会说XXX.exe遇到问题需要关闭。在调试模式下是好的。云我怎么解决?我这个错误已经一个星期了...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多