Ich hatte dieses Problem schon mal, hab es gelöst, hab mir aber nicht notiert, wie...
Das tue ich hiermit: Beim Erben eines Windows.Form-Objekts kam im Designer immer die Fehlermeldung NullReferenceException oder ähnliche. Dies liegt daran, dass im Basis-Form in einem Event oder einer überschriebenen Methode ein Objekt angesprochen wird, das für den Designer noch nicht deklariert ist. Beispiel:
Public Class BaseForm
Inherits Windows.Forms.Form
#Region "Windows Form Designer generated code "
' ...
#End Region
Private obj as Object
'Ein weiterer Konstruktor, der das Objekt erst initialisiert
Public Sub New(ByVal parameter as Object)
Me.New()
obj = New Object()
End Sub
Protected Overrides Sub OnVisibleChanged(ByVal e As System.EventArgs)
MyBase.OnVisibleChanged(e)
obj.MethodCall()
End Sub
End Class
Wird von diesem Form geerbt, dann wird OnVisibleChanged aufgerufen, sobald der Designer geöffnet wird, was zur Folge hat, dass der Aufruf für das nicht initialisierte Objekt obj zu einer NullReferenceException führt. Natürlich gibt es auch das Problem beim entsprechenden Event. Weitere momentan mir bekannte Events bzw. überschreibbare Methoden, die zu diesen Problemen führen, sind Load bzw. OnLoad.
Gelöst werden kann das ganze einfach durch ein einschließen des problematischen Codeblocks mit folgender Bedingung:
If Not Me.DesignMode Then
obj.MethodCall()
End If