Hello everyone, I am working on a VB project which implements a number of custom controls. So far I have had no issue with the controls I have been writing; until now. Every time I add the control to the form it appears like a normal control, however when I run the application, it throws a very vague "An error occurred creating the form. See Exception.InnerException for details. The error is: Object reference not set to an instance of an object" error.
This is the code for my object (I don't think you need to read through all of it):
Public Class RBDSOutput
Public Const SCROLL_CUT As Integer = 0
Public Const SCROLL_WORD As Integer = 1
Public Const SCROLL_CONSTANT As Integer = 2
Private CurrentData As String
Private CurrentScrollValue As Integer
Private CurrentScrollText As String
Private CurrentScrollWaiting As Integer
Private OutputComm As String
Private OutputIP As String
Private OutputPort As String
Private OutputFile As String
Private OutputMode As Integer
Private MAX_CHARS As Integer
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
#Region "Properties"
Public Overrides Property Text As String
Get
Return Lbl_Caption.Text
End Get
Set(value As String)
Lbl_Caption.Text = value
Lbl_OutputDisplay.Left = Lbl_Caption.Right + 2
Me.Width = Lbl_OutputDisplay.Right + 2
End Set
End Property
Public Property Data As String
Get
Return CurrentData
End Get
Set(value As String)
CurrentData = value
Call SendText(CurrentData, True)
End Set
End Property
Public Property MaximumCharacters As Integer
Get
Return MAX_CHARS
End Get
Set(value As Integer)
MAX_CHARS = value
ResizeOutputToCharacter(MAX_CHARS)
End Set
End Property
Public Property ScrollMode As Integer
#End Region
Private Sub ResizeOutputToCharacter(ByVal chars As Integer)
Lbl_Caption.Width = Convert.ToInt32(chars * 0.625)
Invalidate()
End Sub
#Region "Text Output"
Private Delegate Sub SendTextDelegate(ByVal text As String, ByVal scroll As Boolean, ByVal maxLength As Integer)
'Text to be displayed on the radio is sent to this subroutine
'text = Text to be dislayed
'scroll = Will the text be displayed as crolling text (chopped off otherwise)?
'maxLength = The maximum length of characters to be displayed at one time
Private Sub SendText(ByVal text As String, ByVal scroll As Boolean)
Dim tmpText As String
tmpText = text.Trim
If tmpText.Length > MAX_CHARS Then
If scroll Then
CurrentScrollText = text
CurrentScrollValue = 0
CurrentScrollWaiting = 5
Lbl_OutputDisplay.Text = CurrentScrollText.Substring(0, MAX_CHARS)
Tmr_TextScroll.Start()
Else
End If
Else
Lbl_OutputDisplay.Text = text
End If
End Sub
Private Sub Tmr_TextScroll_Tick(sender As Object, e As EventArgs) Handles Tmr_TextScroll.Tick
Dim textChunk As String
If CurrentScrollWaiting > 0 Then
CurrentScrollWaiting -= 1
Exit Sub
End If
If CurrentScrollText.Length - (CurrentScrollValue) < MAX_CHARS Then
Tmr_TextScroll.Stop()
textChunk = CurrentScrollText
Else
textChunk = CurrentScrollText.Substring(CurrentScrollValue, MAX_CHARS)
CurrentScrollValue += 1
End If
SendText(textChunk, True)
End Sub
Public Sub Clear()
CurrentScrollText = ""
CurrentData = ""
End Sub
#End Region
End Class
I am guessing there is an issue somewhere where variables are not being created as new instances of themselves. Any help is greatly appreciated. Thanks!