none
Eigenschaft: Objektverweis erforderlich. RRS feed

  • Frage

  • Hallo,

    Ist wahrscheinlich eine blöde Frage, aber ich brauche für ein Schul-Projekt ein C# Programm, dass n-eckige Buttons verwendet und bis jetzt hatte ich praktisch gar keine Einarbeitungszeit in objektorientierter Programmierung.
    Ich hab mir mal ergoogelt, wie man einem custom Button die Form eines Polygons verpasst,
    jetzt krieg ich aber die folgende Fehlermeldung raus:

    Für das nicht statische Feld, die Methode oder die Eigenschaft "System.Windows.Forms.Control.Region.get" ist ein Objektverweis erforderlich.

    Konnte nicht herausfinden woran das liegt.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Drawing.Drawing2D;
    
    namespace WindowsFormsApplication1
    {
    
        
        public partial class UserControl1 : Button
        {
    
        
    
            public UserControl1()
            {
                InitializeComponent();
                
            }
    
            private void UserControl1_Load(object sender, EventArgs e)
            {
                    GraphicsPath path = new GraphicsPath();
    
                    Point[] corners =
                {
                    new Point(10,10),
                    new Point(50,10),
                    new Point(50,50),
                    new Point(10,50),
                };
    
                    path.AddPolygon(corners);
                    Region region = new Region(path);
                    UserControl1.Region = path;
            }
        }
    }

    Sonntag, 9. Dezember 2012 19:22

Antworten

  • Hallo,

    Ich nehme mal an, es liegt an folgender Zeile:

    UserControl1.Region = path;

    Die eine der obersten Regeln beim OOP ist, das man Objekte instanzieren muss. In deinem Fall versuchst du die Eigenschaft Region zu ändern, und zwar von einem Statischen Objekt, in deinem Fall, willst du die Eigenschaft aber voin der eigenen Instanz verändern. Benutze dazu das this-Schlüsselwort oder schreibe garnichts vor Region (nimm besser this, wenn du dich noch nicht so gut auskennst, sollte nur so eine Anmerkung sein, das es auch ohne geht.)

    this.Region = path;

    Koopakiller [kuːpakɪllɐ] http://koopakiller.ko.ohost.de/

    Sonntag, 9. Dezember 2012 19:30
    Moderator

Alle Antworten

  • Hallo,

    Ich nehme mal an, es liegt an folgender Zeile:

    UserControl1.Region = path;

    Die eine der obersten Regeln beim OOP ist, das man Objekte instanzieren muss. In deinem Fall versuchst du die Eigenschaft Region zu ändern, und zwar von einem Statischen Objekt, in deinem Fall, willst du die Eigenschaft aber voin der eigenen Instanz verändern. Benutze dazu das this-Schlüsselwort oder schreibe garnichts vor Region (nimm besser this, wenn du dich noch nicht so gut auskennst, sollte nur so eine Anmerkung sein, das es auch ohne geht.)

    this.Region = path;

    Koopakiller [kuːpakɪllɐ] http://koopakiller.ko.ohost.de/

    Sonntag, 9. Dezember 2012 19:30
    Moderator
  • ahhh okay danke.
    Eigentlich hätte ich das wissen müssen, habe mich in das Klassen-Konzept eingelesen, bei der Anwendung haperts aber noch.
    Sonntag, 9. Dezember 2012 19:35