UserControl Eigenschaften


JK_net

Erfahrenes Mitglied
Hallo!

Ich versuche gerade mein erstes eigenes UserControl zu entwickeln...

Meine Frage dazu ist, wie ich vorhandene Eigenschaften des Control ausblenden kann.

Eigenschaften wie etwa Font oder Font-Color sind überflüssig, da ich lediglich ein Rechteck oder Kreis ausgebe. Für die Sachen habe ich vier Eigenschaften, die vollkommen genügen.

Würde mich über eure Hilfe sehr freuen!

MfG
Jens
 

JK_net

Erfahrenes Mitglied
Hallo nochmal!

Vielleicht noch zwei kleine Sachen als Ergänzung...

Könnt ihr mir sagen, wie ich in der ToolBox ein Icon für mein Control angezeigt bekomme, und wie ich bei einer Property (Fläche) eine Auswahl für Kreis oder Rechteck hinbekomme (vergl. bei Visible true oder false)?

MfG
Jens
 

erhardt

Erfahrenes Mitglied
Könnt ihr mir sagen, wie ich in der ToolBox ein Icon für mein Control angezeigt bekomme
Es sollte eigentlich sobald du dein Control kompiliert hast unter 'Eigene Benutzersteuerelemente' vorhanden sein. Wenn nicht, kannst du es ja haendisch hinzufuegen. Einfach nur ein Rechtsklick in der Toolbox, dann auf 'Elemente hinzufuegen/entfernen', deine .dll auswaehlen, Control anhaken und fertig.

und wie ich bei einer Property (Fläche) eine Auswahl für Kreis oder Rechteck hinbekomme (vergl. bei Visible true oder false)?
Du musst nur ein enum und ein Property erstellen:
Code:
public enum Flaeche { Rechteck, Kreis};

public class MyControl : UserControl
{
	private Flaeche flaechentyp = Flaeche.Rechteck;
     
	public Flaeche Flaechentyp
	{
		get{return this.flaechentyp;}
		set
		{
			this.flaechentyp = value;
			if(flaechentyp == Flaeche.Kreis)
				this.ErstelleKreis();
			else
				this.ErstelleRechteck();
		}
	}
}
Meine Frage dazu ist, wie ich vorhandene Eigenschaften des Control ausblenden kann.
Ich habe es bisher nicht geschafft die Properties komplett auszublenden. Du koenntest aber das jeweilige Property ueberschreiben und den 'set' Abschnitt rausnehmen. Somit koennte man zumindest den Wert nicht mehr aendern.
Code:
public override Color ForeColor
{
	get{return base.ForeColor;}
}
 

mage

Erfahrenes Mitglied
Also ich würde die Eigenschaft nicht mit Public sondern Private überschreiben, damit sollte sie dann von Aussen nicht mehr Änderbar sein.

Ggf. auch das Attribute für die ForeColore [Browsable(false)] verwenden, damit es nicht im PropertyGrid angezeigt wird.
 

Caracho

Mitglied
mage hat gesagt.:
Also ich würde die Eigenschaft nicht mit Public sondern Private überschreiben, damit sollte sie dann von Aussen nicht mehr Änderbar sein.
Kleine Anmerkung:
Das wird nicht funktionieren, da du den Zugriffsmodifikator beim Überschreiben nicht ändern darfst.
 

Norbert Eder

Erfahrenes Mitglied
Die Eigenschaft ist nach aussen auch nciht sichtbar, wenn du das Attribut
[Browseable(false)]
verwendest. Es gibt noch weitere Attribute, wo du es auch im Editor ausblenden kannst, was Microsoft allerdings unter Editor versteht weiß ihc nicht, denn aus dem IntelliSense bekommst es nicht raus.

Ausblenden kannst du es mit

public override new ....