[C#] TablelayoutPanel legen

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 09-10 08:52
Beste tweakeraars,

Ik zit te kloten met een tablelayout die niet leeg wilt raken. Deze tablelayout wilt bij runtime gevuld vanuit een lijst. Per object in de lijst word een nieuwe column aangemaakt. Nou heb ik een aantal andere tables waarbij het verwijderen wel lukt, alleen bij deze lukt het me niet. Of is het uiteindelijk gewoon makkelijker om een datagrid te gebruiken? Het gaat er om dat data ingevuld kan worden door comboboxen en textboxen en uiteindelijk op een button drukken.

Onderstaande code word uitgevoerd voordat de tabel opnieuw gevult wordt (is afhankelijk van een keuze).

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
while (AddDefectTable.ColumnCount > 1) {
                int column = AddDefectTable.ColumnCount - 1;
                for (int i = 0; i < AddDefectTable.RowCount; i++) {
                    Control c = AddDefectTable.GetControlFromPosition(column, i);
                    if (c != null) {
                        AddDefectTable.Controls.Remove(c);
                        c.Dispose();
                    }
                }

                AddDefectTable.ColumnStyles.RemoveAt(column);
                AddDefectTable.ColumnCount--;
            }

[ Voor 8% gewijzigd door ThaAresX op 05-01-2016 12:56 ]

Alle reacties


Acties:
  • 0 Henk 'm!

Verwijderd

Clear?

Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 09-10 08:52
Clear werkt niet op een tablelayoutpanel. Maar heb het al opgelost. Probleem was dat de table bij init al leeg was.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb het niet getest, maar het lijkt me uiterst opmerkelijk als het niet (goed) zou werken.

Aldus deze link:
TableLayoutPanel.Controls.Clear() does clear all controls. This does not, however, clear all rows (and columns) from the TableLayoutPanel. You could do two things:
reuse the existing rows and columns
clear the added rows and columns before re-creating
If the last option is your choice (because the rows are added by your code that populates the TableLayoutPanel?), use TableLayoutPanel.RowStyles.Clear() to remove all rows from the panel.

Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 09-10 08:52
Verwijderd schreef op dinsdag 05 januari 2016 @ 14:05:
Ik heb het niet getest, maar het lijkt me uiterst opmerkelijk als het niet (goed) zou werken.

Aldus deze link:

[...]
Het verwijderd alle controls in het panel ja. Maar het is bij mij meer het geval dat ook de rijen/kolommen verwijderd worden. En in de quote die je meestuurt staat er zelfs nog dat daar niet mee werkt.