Laden...

Eigene Controls

Erstellt von Fabian vor 19 Jahren Letzter Beitrag vor 19 Jahren 3.091 Views
Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 19 Jahren
Eigene Controls

Hallo Forum,

ich habe da eine Frage zu eigenen Controls. Ich habe meine eigene TextBox erstellt, die einfach von der Standard TextBox erbt.
Ist es jetzt irgendwie möglich, dass ich diese TextBox komfortabel aus dem Designer heraus verwenden kann?
Ich habs schon mit UserControls versucht, was auch soweit klappt. Allerdings habe ich dann zwei Probleme:

  1. Ich muss alle Properties noch mal definieren, um die Standardproperties verfügbar zu machen
  2. Ich kann die Größe der TextBox nicht im Designer ändern. Ich kann zwar den ControlContainer vergrößern, aber die TextBox bleibt genau so groß, wie ich sie im UserControl angelegt habe.

Mach ich da was falsch oder wie kann man das am besten lösen?

Danke und Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 19 Jahren

Hmm, ein bissle weitergekommen bin ich glaube ich. Ich hab mir jetzt über den Komponenten-Designer eine Komponente gebaut und in diesem Komponentencontainer eine TextBox eingefügt. Allerdings scheitert es jetzt an dem Benutzen meiner TextBox. Wie kriege ich das hin?

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 19 Jahren

So, als gelernter Alleinunterhalter schreibe ich mir noch einen Beitrag 🙂. Das mit meinen eigenen Controls und dem Benutzer in der ToolBox funktionieren gut. Jetzt habe ich aber noch eine Frage 🙂: Wie kann ich eigene Properties, die ich in den Controls definiert habe, in den Property-Designer bekomme (wenn das überhaupt möglich ist).

Danke und Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

C
61 Beiträge seit 2004
vor 19 Jahren

Original von Fabian
Wie kann ich eigene Properties, die ich in den Controls definiert habe, in den Property-Designer bekomme (wenn das überhaupt möglich ist).


public int MeinProperty
{
	get { ... }
	set { ... }
}

So ungefähr? 🙂

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 19 Jahren

Hallo cYaONE,

so definiert habe ich die Properties schon. Ich sehe sie im Property-Designer nur leider nicht. Ich würde sie gerne grafisch einstellen können, weil das die Verwendung erheblich erleichern würde.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

333 Beiträge seit 2004
vor 19 Jahren

Gibt da so eine ganze Reihe von Attributen, die man verwenden kann. Hier ein paar Beispiele. Was du meinst, ist das erste.


using System.ComponentModel;
///...
[Browsable(true),
Description("Beschreibungstext"),
DefaultValue(0)]
public int MeinProperty
{
...
}

([bb]|[^b]{2})

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 19 Jahren

Nabend NoOneKnows,

ich danke Dir vielmals. Genau das habe ich gesucht. Jetzt klappts auch mit dem Property-Designer.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 19 Jahren

Nabend,

hmm. Jetzt habe ich wieder das gleiche Problem. Ich habe jetzt den Namen eines Properties geändert und schon wird es mir im Designer nicht mehr angezeigt. Wie kann ich es da wieder hinbekommen? Alles was mir eingefallen ist, habe ich schon ausprobiert (neu anlegen, neu kompilieren sowieso etc..). Hoffe jemand kann helfen.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

C
61 Beiträge seit 2004
vor 19 Jahren

Vielleicht musst du das Control erst zur Toolbox hinzufügen?

K
355 Beiträge seit 2004
vor 19 Jahren

@Fabian:
Hab grad dasselbe Problem wie du (glaub ich jedenfalls). Wo gibts denn son Komponentencontainer? Wenn ich da Komponenten reinziehe, schaun die immer so komisch aus, ich komm nich draus was ich da machen muss...

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 19 Jahren

Hi,

leider nicht. Das hatte ich schon ausprobiert. Habe es aber gerade noch mal versucht. Habe das Control noch mal zur ToolBox hinzugefügt und das bestehende Element in der Form mit dem neu hinzugefügten ersetzt. Auch das hat nichts geholfen. Das Property ist einfach weg 😦.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 19 Jahren

Hallo Krambo,

per Komponentenkontainer habe ich es nicht gemacht. Ich hab noch nicht ganz verstanden, wie ich die Komponenten dann benutze (sie sind ja in dem Container und nicht direkt ansprechbar. Wäre für eine Erklärung in der Hinsicht auch noch dankbar).

Ich habs mit


public class CtrlTextBox : System.Windows.Forms.TextBox {

gemacht.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

K
355 Beiträge seit 2004
vor 19 Jahren

Wo gibts denn den Container? Ohne den geht nämlich nicht wirklich was hab ich so ne Vorahnung...hmm gar nit so einfach das Zeugs 🙂

Ach da stehts aber mit grafisch hat das ganze dann auch nix mehr zu tun
http://msdn.microsoft.com/library/deu/default.asp?url=/library/deu/vbcon/html/vbtskcreatingwfccontainer.asp

Shit jetzt weiss ich auch warum. Ich darf keine Komponentenklasse nehmen, sondern ein benutzerdefiniertes Steuerelement, dann gehts 🙂

K
355 Beiträge seit 2004
vor 19 Jahren

Hab grad noch ne Frage dazu:

Wenn ich mehrere Komponenten beim Benutzersteuerelement habe, wie kann ich dann von ner einzelnen Kompo das OnPaint überschreiben?

Ginge ja normal so:


protected override OnPaint(usw...)
{
   // Code
}

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 19 Jahren

Hmm. Wenn ich ein benutzerdefiniertes Steuerelement erstelle, dann habe ich eine Klasse, die von System.Windows.Forms.Control erbt. Da kann ich dann über den Designer eine TextBox adden. Wie kann ich diese TextBox denn benutzen? Wenn ich das Control in eine Form einfüge, fügt er nur das Control ein, nicht die TextBox.

Kannst Du mir sagen, wie ich die TextBox benutzen kann?

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

K
355 Beiträge seit 2004
vor 19 Jahren

Weiss ich auch nicht. Ich bin momentan nur soweit, dass ich mal n paar Controls reingeschoben habe. Nur muss ich bei manchen das OnPaint überschreiben und weiss da nicht wie ich gezielt auf die Controls zugreifen kann...