Benutzersteuerelement im Benutzersteuerelement Zeichnen



  • Hi nach langer Zeit mal wieder 🙂

    sofort ne Frage:

    Ich hab ein Benutzergesteuertes Element erstellt: GfxBox... Ich zeichne
    dieses auf meienr Form1

    GfxBox box = new GfxBox();
    box.Left = charposX;
    box.Top = charposY;
    box.Width = charwidth;
    box.Height = charheight;
    box.BackColor = Color.FromArgb(red, green, blue);
    
    (sender as Form1).Controls.Add(box);
    

    so nun möchte ich in der GfxBox eine weitere Box darstellen... habe also
    ein weiteres Benutzersteuerelement erstellt:

    GfxChart

    in GfxBox.cs habe ich eine Methode erstellt:

    public void paint(object sender)
    {
    //##### Chart #####
    
    GfxChart chart = new GfxChart();
    chart.Left = 200;
    chart.Top = 500;
    chart.Width = 200;
    chart.Height = 50;
    chart.BackColor = Color.Teal;
    
    (sender as GfxBox).Controls.Add(chart);
    }
    

    nu führ ich aus und es kommt ein Fehler bei (sender as GfxBox).....

    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. <-

    ähm ja ich versteh das nicht so ganz warum er mir kein weiteres
    "rechteck" ins "rechteck" zeichnet.

    Noch etwas:

    Ich habe in meiner Klasse GfxBox mal eine funktion geschrieben
    public void GfxBox_painter(GfxBox box)

    in der nun der Quellcode steht der die GfxChart in die GfxBox zeichnen soll und der Compiler meckert nicht mehr.
    Jedoch
    Seh ich auf meiner Form nur die GfxBox keine GfxChart in der GfxBox.

    irgendwas muss dort falsch laufen und ich weiß nicht was.

    Danke schonmal für euer Bemühen!



  • Erstmal solltest du das in den Contructor packen,damit der Chart immer da ist.
    Zweitens kannst du innerhalb eines Objects einfach mit this auf dieses Object zugreifen.



  • Andorxor schrieb:

    Erstmal solltest du das in den Contructor packen,damit der Chart immer da ist.
    Zweitens kannst du innerhalb eines Objects einfach mit this auf dieses Object zugreifen.

    Ok Danke läuft!


Anmelden zum Antworten