문제

나는 확장하려는 기본적인 ControlCollection 에 VB.NET 그래서 내가 추가 할 수 있습니다 이미지 및 텍스트를 자기로 만든 다음 제어를 자동적으로 변환하 pictureboxes 및 lables.

그래서 내가 만든 상속하는 클래스에서 ControlCollection,overrided 추가 방법 추가 기능이 있습니다.

하지만 실행할 때를 들어,그것은 NullReferenceException.

는 코드는 다음과 같습니다:

        Shadows Sub add(ByVal text As String)
            Dim LB As New Label
            LB.AutoSize = True
            LB.Text = text
            MyBase.Add(LB) 'Here it gives the exception.
        End Sub

검색에 구글,그리고 사람이 말했다 CreateControlsInstance 방법을 사용해야 합 무.그래서 나는,그러나 그것은 InvalidOperationExceptioninnerException 의 메시지 NullReferenceException.

어떻게 이를 구현하려면?

도움이 되었습니까?

해결책

왜에서 상속 정렬 을 정의할 사용자 지정 제어하는 것과 같은 속성을 가지고 텍스트와 이미지?

다른 팁

당신은 아마 더 나은 사용에 대한 포괄적인 컬렉션입니다.Bieng 제어 컬렉션은 정말 무엇이 특별한다.

puclic class MyCollection : Collection<Control>

만약 당신이에서 상속하 제어합니다.ControlCollection 다음을 제공해야 하는 새로운 방법에서 당신의 클래스입니다.새로운 메소드를 호출해야 합 ControlCollection 의 생성자(MyBase.새로운)와 그것을 전달하는 유효한 상위 제어합니다.

만약 코드를 사용하지 않았다면 이것이 제대로 든에서 발생합니다 추가 방법입니다.

이 있을 수 있으 InvalidOperationException 에서 당신의 CreateControlsInstance 방법

다음 코드를 생성자를 호출합니다 잘못의 원인을 추가하는 방법을 던져 든...

Public Class MyControlCollection
    Inherits Control.ControlCollection

    Sub New()
        'Bad - you need to pass a valid control instance
        'to the constructor
        MyBase.New(Nothing)
    End Sub

    Public Shadows Sub Add(ByVal text As String)
        Dim LB As New Label()
        LB.AutoSize = True
        LB.Text = text
        'The next line will throw a NullReferenceException
        MyBase.Add(LB)
    End Sub
End Class
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top