Entwickler-Ecke

WinForms - Positionen mehrerer UserControls aus TableLayoutPanel


mephomat - Do 18.10.12 16:06
Titel: Positionen mehrerer UserControls aus TableLayoutPanel
Hallo Leute!

Bin neu hier, habt bitte Mitleid, wenn ich Fragen falsch stelle. :wink:

Ich habe ein TableLayoutPanel in das zur Laufzeit UserControls erstellt werden.
Nun würde ich gerne die CellPositions jedes erstellten Controls ermitteln. Mit einzelnen funktioniert das schon ganz gut.



Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
//Aktives Control ermitteln
        private void tblLayoutMain_Enter(object sender, EventArgs e)
        {
            Point p = tblLayoutMain.PointToClient(Control.MousePosition);
            _activeControl = tblLayoutMain.GetChildAtPoint(p);
        }

private void btnTake_Click(object sender, EventArgs e)
        {
            TableLayoutPanelCellPosition position1 = new TableLayoutPanelCellPosition();
            position1 = tblLayoutMain.GetCellPosition(_activeControl);
            string test = position1.ToString();
            
            MessageBox.Show(test);
        }


Doch wie bekomme ich alle Positionen, also auch die von den "inaktiven"?

Vielen Dank im Voraus


Ralf Jansen - Do 18.10.12 16:15

Die Position aller Controls? Hört sich nach Wissen an das keiner braucht. Wofür brauchst du das?

TableLayoutPanel hat (wie alle Controls) eine Controls Property an der alle ChildControls dranhängen. Also einfach über TableLayoutPanel.Controls iterieren und für jedes Control die Position abfragen.

Es geht dir doch um alle Controls oder und nicht nur um die UserControls? Aus der Frage wird es nicht ganz klar und dein _activeControl Code würde halt auch ein Control auf dem UserControl finden und nicht zwingend das UserControl.


mephomat - Do 18.10.12 17:03

Erstmal danke für die schnelle Antwort.

Das Ziel ist aus der Anordnung im TLP ein Formular zu erstellen um Daten in eine Tabelle einer DB zu schreiben.
Also, dass das Formular erstellt werden kann. Aber bei der Benutzung nicht mehr veränderbar ist. Versteht man das so?

Es geht nur um die UserControls. Es sind nur Zwei. Eins mit Label+TextBox und eins mit Label+NummericUpDown. Der Inhalt der Label unterscheidet sich.


Ralf Jansen - Do 18.10.12 17:16

Zitat:
Versteht man das so?


Nö ;)

Warum ein anderes Formular erstellen nur um Daten in eine DB zu bekommen?


mephomat - Do 18.10.12 17:25

Zitat:
Nö ;)

Warum ein anderes Formular erstellen nur um Daten in eine DB zu bekommen?



Hehe, glaub ich.

Naja, nicht ich schreibe die Daten in die DB sondern jmd anderes. Und noch jmd anderes legt das Layout für´s Formular fest. Bin ein frischer Azubi und das ist halt ne Aufgabe... Besser als Kaffeekochen. Dein Tip aus deinem ersten Post hat mich bereits weiter gebracht. Danke