Selbsterstelltes Control im Forms Designer benutzen

mage

Erfahrenes Mitglied
Selbsterstelltes Control im Forms Designer benutzen?

Hallo,

Ich habe ein Windows.Forms Control erstellt (erbt von der Klasse Control), welches sich mit GDI+ selbst darstellt.

Es funktioniert fabelhaft, manuell per Code in ein Form eingebunden.
Leider kann ich es aber nur per Code selbst ins Form einbinden, da es nicht in der Liste der Benutzerdefinierten Controls enthalten ist.

Meine Controls die von der Klasse UserControls erben, sind dort zu zu sehen und einwandfrei mit dem Designer in ein Form einzufügen.

Das Control ist direkt in meinem Projekt enthalten und nicht als externe Komponente kompiliert.

Nun würde ich es gern über den Designer bearbeiten(ausrichten etc.), um das Form besser im Verhältnis mit anderen Standardcontrols Visuell im Blick zu haben.
Ich schätze ich muss bestimmte Eigenschaften, Methoden der Schnittstellen implementieren. Leider hab ich nirgends gefunden, welche das genau sind.
Weiss jemand, welche ich implementieren muss ?
Danke
 
Zuletzt bearbeitet:
Meinst du die Eigenschaften die im PropertyGrid auf der rechten Seite angezeigt werden?
Sie werden angezeigt wenn du im Control, das du verwenden willst, mit get und set arbeitest
Code:
public <Datentyp> <Name>
{
	get
	{
		return(<Variable die abgerufen werden soll>);
	}
	set
	{
		<Variable die zugewiesen werden soll> = value;
	}
}
(kann das leider nicht testen ob die Syntax so stimmt (kein C# installiert), kann das jemand bestätigen?)
dadurch kann man auch Schreib-/Lesezugriff ändern
 
Wenn es als eigene DLL kompiliert ist, hast Du dann schon mal versucht diese mit "Add/Remove Items" (rechte Maustaste in Toolbox) in die Toolbox einzubinden?
 
@Kanonenfutter: Meine Propertys funktionieren wunderbar, allerdings nicht im Forms Designer. Um Property über den Designer konfigurien zu können, muss man über der Property Deklaration noch bestimmte Flags mit [..] setzen.

Das ist aber nicht mein Problem, da mein Control generell nicht im Designer bearbeitbar ist.

@goela: Eigentlich wollte ich die Komponete nicht als eigene DLL(Componente) erstellen.

Meine Controls die aus Standard Controls zusammengesetzt sind und von der Klasse UserControl abgeleitet sind, funktionieren im Designer so wie erwartet.

Nur eben die Klasse die von Control abgeleitet ist nicht. Ich habe sie von Control abgeleitet, da ich es komplett selbst zeichne, über eine implementierte OnPaint Methode.

Ich würde aber gerne das Control im Forms Designer ausrichten und positionieren.

Mir scheint, ich haben eine bestimmte Schnittstelle nicht implementiert oder/und abgeleitet, welche den Design Modus bestimmt. Ausserdem muss das Control auch wissen was es zeichnen soll, wenn es sich im Designmodus befindet.
 
Hat jemand einen oder mehrere Links zu Tutorials, wo steht, was ich machen muss, um ein völlig neues Formular-Steuerelement zu erstellen, wie mage? Also ein Formular, dessen Zeichnungs-Methode (OnPaint) völlig neu definiert wird, das Formular also so aussieht, wie ich es gern hätte?
 
Zuletzt bearbeitet:
Du erstellst ein Formular, welches von System.Windows.Forms.Form erbt und dann machst du in deinem Formular
protected override void OnPaint(PaintEventArgs e)
{
//Hier dein eigenes onpaint
//base.OnPaint (e);

}

hilft dir das?
 
Nö, weil es immer noch so aussieht, wie ein Windoze Form. Mit Titelleiste, Buttons oben rechts, System-Menü etc... Ich will's halt komplett selbst malen. Dennoch soll es die selben Features bieten, wie das original Form. Also als Objekt an Application.Run() übergeben werden können, einen (bei Bedarf unsichtbaren) Rahmen haben, mit dem man es vergrößern und verkleinern kann und so weiter und so weiter. Andere Controls kann man doch auch komplett selbst zeichnen. Das Form etwa nicht?
 
Rein aus dem Verständnis:
wenn es die gleiche Funktionalität bieten soll, und bei Application.Run übergeben werden können soll, musst dus von Windows.Forms.Form ableiten!

Du musst hald wirklich die entsprechenden Methoden und dergleichen überschreiben.
Ein Ansatz ist da mal die OnPaint methode.

Ich kenne den genauen Zeichenvorgang der Formulare nicht. Aber das .Net Framework ist ja eigentlich open source... aber hierbei viel spass *g*

Ich werd aber bald was ähnliches brauchen. Ein Treeview-Item neu definieren... Werd möglicherweise auf ähnliche Probleme stoßen. :suspekt:

Grüße Bernhard
 
Wirst du wohl, weil die TreeNode Klasse sealed ist (soweit ich weiß... moment, ich check das mal eben)...
hmm... okay, kommt drauf an, was du machen willst, damit. Also da ich mich offenbar geirrt habe, was die Zugriffsmöglichkeiten auf TreeView und TreeNode angeht (sind NICHT sealed), wäre dir ein Ableiten davon durchaus möglich. Nur besitzt die TreeNode keine überschreibbare OnPaint-Methode.

Da frage ich mich dann, wie man sich einen eigenen Tree baut, so optisch. Müsste man dann wohl rekursiv durch die Nodes durchsteppen und entsprechend auf dem Control zeichnen, seh ich richtig, oder?

Also mal sehen... ich muss das mal ausprobieren. Das würd mich nämlich auch reizen. Da kommen einem ja ungeahnte Möglichkeiten auf... Fein fein... *nähähähä* :suspekt: :)
 
Zurück