C# Zugreifen auf Form von Class

andre weg

Grünschnabel
Hallo, Brauche Hilfe !

habe ein großes Problem in meiner C# Klasse:
Ich übergebe meiner Klasse die Eigenschaften eines Label. Dann erzeuge ich z.B. 10 Label (Label [ i ] = new Klassenname). In der c# Klasse wird beim Klicken auf den Label ein Ereigniss ausgelöst.
Nun möchte ich an dieser Stelle (in der Klasse), die Label ansprechen um z.B. die Backcolor zu ändern. Normaler weise würde ich es mit
Form1 f = new Form1 ();
f.label [1].BackColor = Color.White machen.
Sobal ich mich in der Klasse befinde und dieses auslöse kennt er das Objekt nicht. Habe die Funktion, wo ich die Label erzeuge auf public gesetzt, außerdem habe ich es im Hauptprg. mit :
public [] Label;
Aber auch ohne Erfolg. Auf andere Elemente von der Form kann ich problemlos zugreifen (nachdem ich sie auf Public gesetzt habe) nur auf die von mir erzeugten Label nicht. (Außer auf das aktuelle mit this., aber ich muss auch auf die anderen zugreifen können)
Weiß jemand Rat

Gruß

André
 
Hallo.

Bitte strukturiere beim nächsten Mal deinen Beitrag etwas besser.

Hier ein bisschen Beispielcode.
Im EventHandler kannst du den sender zu einer Labelinstanz casten, und damit dann die Eigenschaften setzen.

Wenn der Code in der Form-Klasse enthalten ist, kannst du auf andere Methoden, oder Felder ganz normal zugreifen, oder wenn du einen Objectverweis nehmen willst, benutze "this".
Aber, den Namen des Object (z.b. wie du erwähntest f) kannst du nicht nehmen, da dies im erzeugten Objekt nicht existiert. Das gibt es nur dort, wo du es erzeugt hast.

Code:
public class Blubb : Form
{
	public Label[] labels;
	
	public Blubb()
	{
		labels = new Label[5];
		
		for (int i = 0; i < 5; i++)
		{
			labels[i] = new Label();
			labels[i].Click += new EventHandler(this.LabelClick);
		}
	}
	
	private void LabelClick (object sender, EventArgs ea)
	{
		Label l = (Label) sender;
		l.BackColor = Color.White;
	}

}

MfG,
Alex
 

Neue Beiträge

Zurück