Laden...

Problem mit TableLayoutPanel beim neubefüllen

Erstellt von Sköll vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.534 Views
S
Sköll Themenstarter:in
5 Beiträge seit 2008
vor 15 Jahren
Problem mit TableLayoutPanel beim neubefüllen

Hallo,

ich schreibe eine Software, die ein Cisco-Gerät ausliest, die Konfiguration im Programm abbildet und auch wieder auf das gerät schreiben kann.

Soweit so gut.

Beim auslesen der vorhandenen Ports soll es Diese in einem TableLayoutPanel auflisten. Klappt auch wunderbar.

Jetzt lese ich einen Switch mit mit 26 Ports aus und er bildet die richtig ab:

(oberes Bild)

Danach schalte ich mit dem COM-Switch auf den 2 Port Router um und lese Diesen aus. Wenn nun weniger Ports in dem Gerät sind, kürzt er die gesamtgröße des Elements entsprechend, vergrößert die letzte Zeile aber enorm:

(unteres Bild)

Designer-generierte Config:

// 
// main_module0_panel0
// 
this.main_module0_panel0.AutoScroll = true;
this.main_module0_panel0.AutoSize = true;
this.main_module0_panel0.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.main_module0_panel0.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single;
this.main_module0_panel0.ColumnCount = 3;
this.main_module0_panel0.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 60F));
this.main_module0_panel0.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 465F));
this.main_module0_panel0.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 60F));
this.main_module0_panel0.Controls.Add(this.label26, 0, 0);
this.main_module0_panel0.Controls.Add(this.label27, 1, 0);
this.main_module0_panel0.Controls.Add(this.label28, 2, 0);
this.main_module0_panel0.Location = new System.Drawing.Point(36, 56);
this.main_module0_panel0.MaximumSize = new System.Drawing.Size(617, 380);
this.main_module0_panel0.Name = "main_module0_panel0";
this.main_module0_panel0.Padding = new System.Windows.Forms.Padding(0, 0, 22, 0);
this.main_module0_panel0.RowCount = 1;
this.main_module0_panel0.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 27F));
this.main_module0_panel0.Size = new System.Drawing.Size(611, 29);
this.main_module0_panel0.TabIndex = 0;

"Zurücksetzen" des Panels vor dem zeilenweisen analysieren der Geräteconfig:


// Rows in den Modultabellen löschen und Überschriften neu einfügen
main_module0_panel0.RowCount = 1;
main_module0_panel0.Controls.Clear();
main_module0_panel0.Controls.Add(this.label26, 0, 0);
main_module0_panel0.Controls.Add(this.label27, 1, 0);
main_module0_panel0.Controls.Add(this.label28, 2, 0);

Das ganze Passiert aber nur, wenn ich Autoscroll = true habe. Sonst sieht alles super aus. Wo ist mein Denkfehler?

Danke im Vorraus.

Jan

T
708 Beiträge seit 2008
vor 15 Jahren

Könnte es evtl. daran liegen?

this.main_module0_panel0.AutoSize = true;

Gruß,
TriB

H
43 Beiträge seit 2005
vor 15 Jahren

Du musst bei jedem Zeilenumbruch die Höhe des Controls setzen, sprich immer für jede Zeile die Höhe mit addieren so das du die gesamt Höhe des Controls hast und diese dann immer setzen.
Hast du Autosize auf true?

S
Sköll Themenstarter:in
5 Beiträge seit 2008
vor 15 Jahren

Du musst bei jedem Zeilenumbruch die Höhe des Controls setzen, sprich immer für jede Zeile die Höhe mit addieren so das du die gesamt Höhe des Controls hast und diese dann immer setzen.
Hast du Autosize auf true?

Ja, ich habe autosize = true. Sollte der das dadurch nicht von selbst machen. Ich mein, deshalb setz ich das ja.

Jan

H
43 Beiträge seit 2005
vor 15 Jahren

Spiel mal mit AutoSizeMode!

5.299 Beiträge seit 2008
vor 15 Jahren

Wieso zeigst du Daten nicht im DatagridView an?

Überhaupt empfehle ich, ein Datenmodell sich auszudenken (immanent machste das eh) und in ein typisiertes Dataset abzubilden (der Dataset-Designer ist ein guter Visualisierer von Datenmodellen).
Dann ein QuicknDirty GUI schreiben, und dann die Funktionalität implementen. Am Schluß ein feines GUI machen. (Die Reihenfolge ist ja egal, aber ganz ohne GUI ist die Funktionalität schlecht auszuprobieren)

Der frühe Apfel fängt den Wurm.