Benutzer mit den meisten Antworten
Eigenschaft: Objektverweis erforderlich.

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; } } }
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/
- Als Antwort markiert Robert BreitenhoferModerator Montag, 10. Dezember 2012 10:35
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/
- Als Antwort markiert Robert BreitenhoferModerator Montag, 10. Dezember 2012 10:35