[C#/WinForms] Rij invoegen bij een tablelayout

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 09-10 08:52
Hallo allemaal,

Ik wil aan de hand van de invoer een nieuwe regel toevoegen aan een tablelayout. Een regel heeft een aantal textboxes, deze moeten gekopieerd worden en in de regel er onder gezet worden. Onderstaande code werkt, maar alleen wanneer ik constant een textbox uit dezelfde kolom invul. Wanneer ik een andere textbox invul, klopt de volgorde van de onderstaande regels niet meer. Zou iemand mij hierbij kunnen helpen?

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
if (tablelayoutpanel1.RowCount >= 4) {
                tablelayoutpanel1.RowCount += 1;
                tablelayoutpanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize, 25F));

                for (int x = 3; x < tablelayoutpanel1.RowCount; x++) {
                    int row = tablelayoutpanel1.RowCount - 1;
                    for (int y = 1; y < tablelayoutpanel1.ColumnCount; y++) {
                        Control c = tablelayoutpanel1.GetControlFromPosition(y, x);
                        TextBox alt_quantity = new TextBox();
                        if (c != null) {
                            alt_quantity.Text = ((c as TextBox)).Text;
                            alt_quantity.Dock = DockStyle.Fill;
                            alt_quantity.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                            alt_quantity.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
                            alt_quantity.TextChanged += new EventHandler(dyna_TextChanged);
                            alt_quantity.Enter += new EventHandler(dyna_Enter);
                            int rowPos = tablelayoutpanel1.GetRow(c);
                            c.Dispose();
                            tablelayoutpanel1.Controls.Add(alt_quantity, y, rowPos + 1);
                            
                        }
                    }
                    if (row != 3) {
                        row--;
                    }
                }


Afbeeldingslocatie: http://i.imgur.com/S0fQcIo.png
Alle input wanneer ik 1 kolom gebruik

Afbeeldingslocatie: http://i.imgur.com/SbZJYGp.png
Alle input wanneer ik 2 kolommen gebruik

Afbeeldingslocatie: http://i.imgur.com/ck233jr.png
Alle input wanneer ik 3 kolommen gebruik. Volgorde was 1-2-3. 2 staat onderaan, maar zou dus op de één na laatste rij moeten komen.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TextBox org_quantity = AddDefectTable.GetControlFromPosition(i, 2) as TextBox;

              

                TextBox txt_quantity = new TextBox();
                txt_quantity.Text = org_quantity.Text;
                txt_quantity.Dock = DockStyle.Fill;
                txt_quantity.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
                txt_quantity.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                txt_quantity.TextChanged += new EventHandler(dyna_TextChanged);
                txt_quantity.Enter += new EventHandler(dyna_Enter);
                txt_quantity.Tag = AddDefectTable.RowCount - AddDefectTable.GetRow(org_quantity) - 1;
                

                org_quantity.Clear();
                AddDefectTable.Controls.Add(txt_quantity, i, 3);


*EDIT* Wederom vergeten om t als vraag neer te zetten. Moet nog even wennen daaraan. Kan een mod dit veranderen aub?

[ Voor 17% gewijzigd door ThaAresX op 20-01-2016 12:02 ]


Acties:
  • 0 Henk 'm!

  • schoene
  • Registratie: Maart 2003
  • Laatst online: 22:48
Ik heb je code niet bekeken, maar waarom gebruik je hier geen datagridview voor met een achterliggende datasource?

Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 09-10 08:52
schoene schreef op donderdag 21 januari 2016 @ 11:49:
Ik heb je code niet bekeken, maar waarom gebruik je hier geen datagridview voor met een achterliggende datasource?
Ja heb het inderdaad al opgelost met een datagrid. Rijen toevoegen daar is iets makkelijker dan bij een tablelayout.