Control nicht sichtbar

M

MusiumInCapitiss

Hi
Ich versuche gerade eine Klasse(myClass) zu schreiben, mit der ich eine Formklasse bearbeiten kann.
myClass soll gewisse Forms(textbox,buttons & co) sichtbar/ unsichtbar machen und verschieben können,
dazu möchte ich über ein Prpperty Elemente von meiner Formklassen an meine myClass weitergeben.
Dies habe ich bis jetzt mit einem Control versucht, dass klapt aber leider nur teilweise, da die Forms, welche sich in einem Control befinden nun nicht mehr sichtbar sind.
Hier mein Code:

public partial class TestForm : Form
{
private Expander myClass= new myClass();

public TestForm()
{
InitializeComponent();

Control x = new Control();
x.Controls.Add(textBoxTest);
x.Controls.Add(labelTest);
x.Controls.Add(buttonTest);

Control y = new Control();
y.Controls.Add(richTextBoxTest);

myClass.Control1 = x;
myClass.Control2 = y;

}
}
// textBoxTest, labelTest, buttonTest sind via Designer erstellt

Nun meine Frage…wie kann ich die Forms wieder sichtbar machen oder, anderst übergeben, so das ich sie nicht in ein control stecken muss?

Gruss

MusiumInCapitiss
 
C#:
Control x = new Control();
x.Controls.Add(textBoxTest);
hängt in der Luft, x und y wurden keinem Formular zugewiesen.

Warum das überhaupt?
Damit änderst du den Parent der Controls (textBoxTest etc.) und diese sind dann nicht mehr dem Formular zugeordnet.
 
Zuletzt bearbeitet von einem Moderator:
hm..Ich hatte die Controls mal meinem Form zugewiesen
this.Controls.Add(x);

aber damit waren die forms in x immer noch nicht sichtbar

"Warum das überhaupt?
Damit änderst du den Parent der Controls (textBoxTest etc.) und diese sind dann nicht mehr dem Formular zugeordnet. "

Mein Ziel ist es nicht die Parent der Controls (textBoxTest etc.) zu ändern sondern diese an eine 2. Klasse weiter u geben, gedacht war das in fomr eines Controls...

Jetzt is nur die Frage, wie kann ich die (textBoxTest etc.) sichtbar machen, oder wie kann ich sie anderst übergeben?

mfg.
 
1. Wenn du deine Controls an ein anderes Controls übergibst ist automatisch dieses neue Control der Container der die Controls hält.
Das du deine Controls nicht siehst könnte daran liegen das deine Controls im nicht sichtbaren Bereich positioniert sind, sprich das neue Control ist z.B. zu klein.
Da du aber Control verwendest und nicht ein ContainerControl (z.B. Panel) bin ich mir jetzt nicht mal sicher ob du überhaupt deine Controls sehen könntest.

2.1. In deiner Klasse könntest du eine eigene Liste halten, List<Control>.
Das ist eine einfache generische Liste die den Parent nicht ändert.

2.2. Oder du verwendest ein Dictionary, Dictionary<string, Control>.
In diesem Fall wäre der Key ein string, welches deinen Controlnamen hält und das Value das Control.
So könntest du direkt mit dem Controlnamen arbeiten und müsstest nicht ständig in der Liste suchen.
z.B.: meinListControl["textBoxtest"].Visible=false;
 
Zurück