Hallo, folgendes Problem. Ich habe mehrere Textboxen mit Labels in die Daten eingegeben werden können. Je nach Auswahlkriterium sind aber nur manche von denen sichtbar. Nun möchte ich aber diese Controls immer direkt untereinander stehen haben, auch wenn manche ausgeblendet sind, damit kein leerer Bereich vorhanden ist. Wie mache ich das am besten? Ich denke die Controls in ein Panel packen, das wäre schon mal der erste Schritt. Wie organisiere ich dann das automatische anpassen im Panel?
Ich nehme an du realisiserst das Sichtbar / Unsichtbar über .visible, oder?
Lass doch eine Schleife durchlaufen, die überprüft, ob ein Control.Visiblefalse ist. wenn ja, werden die Position zwischengespeichert und dem nächsten visibletrue Control als position übergeben.
und so stellt sich wieder einmal die Frage: Warum klappt das nicht gleich so gut?
Du kannst ein FlowLayoutPanel nehmen, und FlowDirection.TopDown einstellen.
Deine Textboxen müssen jeweils zusammen mit dem entsprechendem Label auf ein kleines Panel, sodaß sie von außen wie ein Control gelten.
Und diese kleinen Panels schmeisste ins FlowLayoutPanel - das ordnet die autom. schön an.
Dann kannste son panel hiden und showen, und kein Problem
Private Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) _
Handles CheckBox1.CheckedChanged
CaptionPanel1.Visible = CheckBox1.Checked
End Sub
ups - vb - aber so in der Art 😉
Der frühe Apfel fängt den Wurm.
Hallo , versuche gerade die Labels aus einem Panel über eine foreach-Schleife neu anzuordnen. Geht aber nicht, da ich dem control (ctrl.Locatin.X = Wert) keinen WErt zuweisen kann. Hat jemand eine Idee warum?
Hier noch der Quellcode:
for (int i = 0; i < panel_Eingabedaten.Controls.Count; i++ )
foreach (Control ctrl in panel_Eingabedaten.Controls)
{
if((ctrl is Label) && (ctrl.Visible))
{
if(ctrl.Tag.ToString() == i.ToString())
{
//Label label = (Label) lbl;
ctrl.Location.X = 10; // Geht nicht (Cannot modify the expression because its not a variable ==> so lautet die Meldung vom Compiler)
ctrl.Location.Y = 20;
}
}
}
versuch mal
ctrl.Location= new Point(10,20);
und so stellt sich wieder einmal die Frage: Warum klappt das nicht gleich so gut?