2012-07-06 2 views
0

Мой босс дал мне другое преобразование от VB6 к VB2005 (2.0 .Net framework), затем к VB2010 (4.0 .Net framework).Microsoft.VisualBasic.Compatibility.VB6.RadioButtonArray

, когда я будучи конвертирование, я нашел это предупреждение от 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, пожалуйста, поделитесь с нами =]

+2

"прекратить при выполнении некоторой функции"? Можете быть более конкретными? Крушение может быть связано ни с чем, даже с путём, и не обязательно с базой совместимости VB6. Ваша машина разработки запускает 64-битную машину? – Deanna

+0

привет, у меня есть функция отчета, когда я запускаю эту функцию, он покажет окно сообщения о: xxx.exe столкнулся с проблемой и должен закрыть. он по-прежнему работает в vb2005, но после конвертирования в 2010, работа с .exe не работает, когда я использую функцию отчета. Я также читаю журнал событий с ПК. он сказал, что .NET runtime 4.0 error Reporting. – user1506228

ответ

0

VB6 позволил вам довольно легко управлять массивами управления, RadioButtonArray был конструкцией, позволяющей преобразовывать из массива Control в нечто, что может использоваться таким же образом. Мне всегда было легче читать результат, создав пустой массив типа элемента управления и используя свойство Tag в качестве индекса, затем назначьте элементы управления новому массиву.

В этом примере предполагается, что у вас есть 4 радиокнопки с их свойствами тегов устанавливается от 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 
+0

спасибо, я новичок, что такое cntrl? также эта ошибка, должен ли я удалить ошибку VB6.RadioButtonArray и написать новый код, как ваш пример, чтобы решить эту проблему? – user1506228

+0

Я, вероятно, должен был написать это как «Для каждого cntrl As Control в Me.Controls», я отредактирую пример. Если бы это был я, это то, что я мог бы уйти от VB6.RadioButtonArray и вместо этого использовать Control Array. Вы должны будете удостовериться, что события назначены каждому радиобарабану. Я также добавлю код, чтобы показать это. Не существует абсолютно чистого способа сделать это. но он должен позаботиться о вашей проблеме. –

+0

получил и поблагодарил вас за это, вы имеете какое-либо представление об ошибке предупреждения. Импортер библиотеки типов не смог преобразовать подпись для участника DISPPARAMS.rgdispidNamedArgs.? – user1506228

 Смежные вопросы

  • Нет связанных вопросов^_^