2016-08-07 4 views
0

Итак, у меня был Line Control на форме в версии VB6, однако преобразование сделало файл на нем отдельно. Скомпилированный вывод работает, но он поставляется с предупреждением, которое я хочу удалить для поддержки 4.6+, если бы удалить Miscorsoft.VisualBasic.Compatibility, чтобы я был в порядке, не ссылаясь на него.У меня есть проект, преобразованный из VB6 в VB.Net, который использует .NET 4.5.2 с BaseControlArray Issue

Option Strict Off 
Option Explicit On 
Imports System.Windows.Forms 
Imports System.ComponentModel 
Imports Microsoft.VisualBasic.Compatibility.VB6 
Imports Microsoft.VisualBasic.PowerPacks 

<ProvideProperty("Index", GetType(LineShape))> Friend Class LineShapeArray 
    Inherits BaseControlArray 
    Implements IExtenderProvider 

    Public Event [Click] As EventHandler 

    Public Sub New() 
     MyBase.New() 
    End Sub 

    Public Sub New(ByVal Container As IContainer) 
     MyBase.New(Container) 
    End Sub 

    Public Function CanExtend(ByVal Target As Object) As Boolean Implements IExtenderProvider.CanExtend 
     If TypeOf Target Is LineShape Then 
      Return BaseCanExtend(Target) 
     End If 
     Return 0 
    End Function 

    Public Function GetIndex(ByVal o As LineShape) As Short 
     Return BaseGetIndex(o) 
    End Function 

    Public Sub SetIndex(ByVal o As LineShape, ByVal Index As Short) 
     BaseSetIndex(o, Index) 
    End Sub 

    Public Function ShouldSerializeIndex(ByVal o As LineShape) As Boolean 
     Return BaseShouldSerializeIndex(o) 
    End Function 

    Public Sub ResetIndex(ByVal o As LineShape) 
     BaseResetIndex(o) 
    End Sub 

    Public Shadows Sub Load(ByVal Index As Short) 
     MyBase.Load(Index) 
     CType(Item(0).Parent, ShapeContainer).Shapes.Add(Item(Index)) 
    End Sub 

    Public Shadows Sub Unload(ByVal Index As Short) 
     CType(Item(0).Parent, ShapeContainer).Shapes.Remove(Item(Index)) 
     MyBase.Unload(Index) 
    End Sub 

    Public Default ReadOnly Property Item(ByVal Index As Short) As LineShape 
     Get 
      Item = CType(BaseGetItem(Index), LineShape) 
     End Get 
    End Property 

    Protected Overrides Sub HookUpControlEvents(ByVal o As Object) 
     Dim ctl As LineShape 
     ctl = CType(o, LineShape) 
     If Not IsNothing(ClickEvent) Then 
      AddHandler ctl.Click, ClickEvent 
     End If 
    End Sub 

    Protected Overrides Function GetControlInstanceType() As System.Type 
     Return GetType(LineShape) 
    End Function 
End Class 

И Предупреждение:

warning BC40000: 'BaseControlArray' is obsolete: 'Microsoft.VisualBasic.Compatibility.* classes are obsolete and supported within 32 bit processes only. http://go.microsoft.com/fwlink/?linkid=160862'. 

И ссылка на предупреждения на самом деле не быть полезным при всех фиксируя это предупреждение.

Я закончил тем, что делал это в случае краски формы, которая использует строки после ответа на вопрос ниже, что я отметил:

Private Sub Form2_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint 
     e.Graphics.DrawLine(Pens.Gray, 0, 151, Me.Width, 151) 
     e.Graphics.DrawLine(Pens.White, 0, 152, Me.Width, 152) 
    End Sub 

y1 и y2 значения в DrawLine могут быть заменены на высоту формы это разыскивается. То же самое для цвета Pens.

+0

Вопросы, требующие помощи по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См. [Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve). Также бессмысленно говорить * он поставляется с предупреждением *, не показывая нам код и точно, что * предупреждение * он производит. –

+0

Отредактировано сейчас с данными всего файла. – PSXGamerPro1

ответ

1

Я вижу три вопроса: массивы управления, контроля линии, использование Microsoft.VisualBasic.Compatibility.

  1. Используйте FloatingKiwi's answer, чтобы избежать контрольных массивов.

  2. Заменить управление линией методами рисования линии .Net as explained here. Я рекомендую вам не использовать Power Pack Line Control, так как Power Packs больше не обновляются.

  3. Рекомендуется прекратить использование Microsoft.VisualBasic.Compatibility на всякий случай, если он будет удален, хотя лично я бы подумал о том, чтобы сначала запустить весь проект (при необходимости, Microsoft.VisualBasic.Compatibility), а затем попытаться удалить Это.