ReferenceNullException bei eigenem UserControl



  • Hallo zusammen,

    ich habe eine Ableitung der Button-Klasse geschrieben. Da es sich nur um eine Modifikation dieser handelt, habe ich nicht die Steuerelement-Projekt Vorlage benutzt.

    Das Ganze sieht wie folgt aus:

    #ifndef _PROGRESSBUTTON_H_
    #define _PROGRESSBUTTON_H_
    
    using namespace System::Windows::Forms;
    using namespace System::Drawing;
    
    public ref class fsProgressButton : public Button
    {
    private:
    	Bitmap^							   m_bmp;
    	System::ComponentModel::Container^ components;
    
    	void CreateMemoryBitmap(void);
    
    	void InitializeComponent(void)
    	{
    
    	}
    protected:
    	virtual void OnPaint(PaintEventArgs^ e) override;
    public:
    	fsProgressButton(void) : Button() 
    	{
    		InitializeComponent();
    	}
    	~fsProgressButton(void)
    	{
    		if( components )
    			delete components;
    	}
    };
    
    #endif
    

    Ich lasse das Projekt als DLL kompilieren und binde diese dann über Elemente hinzufügen in die Toolbox mit ein. Wenn ich nun das Steuerelement auf meiner Form platzieren möchte, bekomme ich die im Betreff genannte Exception ...

    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    Ich gehe mal davon aus, dass das Ganze etwas mit dem Designer zu tun hat. Was genau benötigt er noch, um seinen DesignerCode korrekt zu erstellen?



  • Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    Instanz - Instanzierung

    Erstelle eine Instanzierung, bei Visual C++ mit

    gcnew
    


  • LiGERWooD schrieb:

    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    Instanz - Instanzierung

    Erstelle eine Instanzierung, bei Visual C++ mit

    gcnew
    

    Ähm, okay - ich habe mich wohl schlecht ausgedrückt 😉

    Wie man eine Klasse instanziert ist mir schon klar. Ich denke mal, dass es sehr selten vorkommt, dass jemand eine Klasse ableitet, wenn er nicht mal weiß, wie er eine Instanz davon bildet, aber lassen wir dass.

    Ich kann die Klasse so ja auch instanzieren und verwenden. Ich möchte Sie jedoch der Toolbox im Visual Studio hinzufügen. Deswegen habe ich das Projekt als DLL kompiliert (habe ich eigentlich schon geschrieben) und der Toolbox hinzugefügt.

    Das einzige Problem ist, dass DER DESIGNER nicht in der Lage ist seinen Designer-Code für mein Steuerelement zu bilden.



  • Es gibt für den Designer spezielle Attribute die man setzen kann.
    z.B. was beachtet werden soll, was nicht, etc.

    Weiss aber den konkreten Namen des Attributes nicht.

    Simon



  • Wäre interessant zu wissen.



  • Das was Du zeigst kann im Designer nicht funktionieren. Zeig mal die abgeleitete Klasse. Ich tippe mal:

    Deine Bitmap ist leer (NULL) und Du verwendest diese im OnPaint -> Zack.

    Mach mal 2 Visual Studio Instanzen auf. In einer lad die Komponente (VSA) und hänge Dich dann an den Prozess des 2. Visual Studios (VSB) drann. Dann ziehe in VSB das Control auf die Form und schau wo Du mit dem Debugger in VSA aufschlägst.


Anmelden zum Antworten