Laden...

Forenbeiträge von [ac]sebastian Ingesamt 8 Beiträge

09.02.2005 - 20:56 Uhr

so jetzt habe ich das ergebniss was ich haben wollte, es wird im designer das angezeigt was ich sehen will, und es werden die eingestellten werte als init daten im form abgespeichet.

[Serializable()]

das hat noch gefehlt, es muss nur vor die entsprechende klasse geschrieben werden,.. jetzt geht es.
Ich danke allen die mir geholfen haben.

MfG
Sebastian

09.02.2005 - 20:06 Uhr

es geht immer noch nicht,

meine klasse sieht jetzt so aus:


[TypeConverter(typeof(ExpandableObjectConverter))]
	[Browsable(true)]
	public class Test
	{

		private int m_SkaleFrequence= 0;
		private int m_SkaleFrequence1=0;
		
		[Description( "gibt an wie viele kleine teilstriche an dem graphen gezeichnet werden")]
		[Category( "Skala" )]
		[RefreshProperties(RefreshProperties.All)]
		[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
		public int SkaleFrequence
		{
			get{	return m_SkaleFrequence; }
			set{	m_SkaleFrequence = value; }
		}

		[Description( "gibt an wie viele kleine teilstriche an dem graphen gezeichnet werden")]
		[Category( "Skala" )]
		[RefreshProperties(RefreshProperties.All)]
		[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
		public int SkaleFrequence1
		{
			get{	return m_SkaleFrequence1; }
			set{	m_SkaleFrequence1 = value; }
		}

		public Test(int A, int B)
		{
			m_SkaleFrequence=A;
			m_SkaleFrequence1=B;
		}
	}

vielleicht hat ja jemand noch ne idee

Sebastian

09.02.2005 - 14:54 Uhr

.. so noch ne schlechte nachricht,..
ich sehe jetzt im designer mein objekt mit seinen untervariablen, aber der designer erzeugt keinen code um das objekt zu initialisieren.
somit ist beim start der anwendung mein objekt was ich einstellen will immer mit den defaulteinstellungen der klasse belegt.

Sebastian

09.02.2005 - 14:15 Uhr

@NoOneKnows
vielen vielen dank,
genau das habe ich gesucht,.. in der doku. habe ich nichts gefunden was darauf hindeutet.
du hast mir sehr geholfen.
wenn du noch ne idee dazu hast wäre es ja fast wie weihnachten.
Link zu Topic

MfG
Sebastian

09.02.2005 - 11:51 Uhr

Hi,

wenn ich ein in einem user control ein int als öffentlich Var. definiere zb so:


[Description( "Breite für die beschriftung einstellen (in % vom steuerelement)")]
		[Category( "Text" )]
		[RefreshProperties(RefreshProperties.All)]
		public int TextWhitdth
		{
			get{	return m_TextWhitdth; }
			set{	m_TextWhitdth = value; Invalidate(); }
		}

dann erscheint die variable des elemtes im designer. und ich kann da eine zahl eigeben.
wenn ich aber nun eine objekt einer klasse übergebezb. so:


public class Point1
	{
		
		[Description( "Anfangsbarbe vom Farbverlauf")]
		[Category( "Allgemein" )]
		[RefreshProperties(RefreshProperties.All)]
		[Browsable(true)]
		private int m_StartFarbe;
		public int StartFarbe
		{
			get{	return m_StartFarbe; }
			set{	m_StartFarbe = value; }
		}
	}


[Description( "Farbes des Textes für die Beschriftung")]
		[Category( "BarFarben" )]
		[RefreshProperties(RefreshProperties.All)]
		[Browsable(true)]
		public Point1 
		{
			get{	return m_FarbBereich1; }
			set{	m_FarbBereich1 = value; Invalidate(); }
		}

dann erscheint im desiger zwar der text und der punkt FarbBereich1, aber ich kann die eigenschaften nicht einstellen, zb. wie bei der klasse point. wo dan so ein kleines '+' zeichen ersheint und man x und y einstellen kann.

Hat jemand für mich einen tipp wie ich die variablen der klasse Point im desiger unter den Punkt FarbBereich1 sichtabr und auswählbar mache?

MfG
Sebastian

08.02.2005 - 15:41 Uhr

ne, das wars leider auch nicht,.. ich habe auch mal versucht die var. direkt zu initialisieren, also gleich bei der deklaration, das ging auch nicht.

was ich will ist bei der klasse/elemnet TabControl ganz gut zu sehen, wenn man ein neues TabSheet erzeugt,.. fügt der designer den code für das element hinzu also xxx.Add(this.Sheet)
und erzeugt darunter den code um das neue objekt zu initialisieren so wie es im designer geschehnen ist.

Sebastian

08.02.2005 - 15:14 Uhr

ich habe jetzt mal folgenden COde in die Init Routine gemacht,..

private void InitializeComponent()
{
//
// VerticalProgressBar
//
this.Name = "VerticalProgressBar";
this.Load += new System.EventHandler(this.VerticalProgressBar_Load);

		this.ArrayListe.Add(new Beschriftung());  

	}  

jetzt wird nach dem starten 1 objekt erzeugt. was ja auch richtig ist.
aber wie komme ich an die daten vom designer bzw. wie sage ich der routine das mit sie n element mit x,y,z initialisieren soll.

Sebastian

08.02.2005 - 14:44 Uhr

Hallo,
ich programmieren gerade ein UserControl, ich habe eine die klasse COllectionBase vererbt und sieht nun so aus:

[Description( "VerticalProgressBar Setze die Texte für die beschriftung")]
[Category( "VerticalProgressBar" )]
[RefreshProperties(RefreshProperties.All)]
public BeschrArray ArrayListe
{
get
{
return m_ArrayListe;
}
set
{
m_ArrayListe = value;
Invalidate();
}
}

public class BeschrArray : CollectionBase
{

	public Beschriftung this[ int index ]    
	{  
		get    
		{  
			return( (Beschriftung) List[index] );  
		}  
		set    
		{  
			List[index] = value;  
		}  
	}  

	public int Add( Beschriftung value )    
	{  
		return( List.Add( value ) );  
	}  

	public int IndexOf( Beschriftung value )    
	{  
		return( List.IndexOf( value ) );  
	}  

	public void Insert( int index, Beschriftung value )    
	{  
		List.Insert( index, value );  
	}  

	public void Remove( Beschriftung value )    
	{  
		List.Remove( value );  
	}  

	public bool Contains( Beschriftung value )    
	{  
		// If value is not of type Int16, this will return false.  
		return( List.Contains( value ) );  
	}  

}  

public class Beschriftung
{
public int Pos;
public string Text;
public Color Farbe;

	[Description( "Test")]  
	[Category( "Skala" )]  
	[RefreshProperties(RefreshProperties.All)]  
	private int m_SkaleFrequence;  
	public int SkaleFrequence  
	{  
		get  
		{  
			return m_SkaleFrequence;  
		}  
		set  
		{  
			m_SkaleFrequence = value;  
		}  
	}  
}  

wenn ich nun das neue element im designer sehe, dann kann ich über das auswählmenue objekte vom typ Beschriftung hinzufügen und einstellen, aber egal was ich einstelle der designer übernimmt die neuen objektdaten nicht mit in das aktuelle form.
das ziehl ist es eine belibige anzahl von objekten mit voreinstellungen( di im designer gemacht werden) an das usercontrol zu übergeben und nicht jedes elemnet per hand zu initialisieren.
und das user controll kann ja mit Beschriftung.COunt feststellen wie viele objekte übergeben werden.
wenn ich die objekte zur laufzeit hinzufüge funktioniert es, zb. in form load.

ich hoffe ihr könnt mir weiterhelfen, ich habe schon überall gesucht, aber bin nirgends so richtig fündig geworden.

Sebastian