Beste tweakeraars,
Ik heb een TablePanel. Nou wil ik een extra rij invoegen met een aantal controls erbij wanneer een checkbox checked is. Dit gebeurd. Alleen de toegevoegde rij moet weer verwijderd worden wanneer de checkbox unchecked wordt. Dit gebeurt wel. Echter de table wordt steeds groter ipv weer terug naar de originele grootte. Dus dan heb ik een lege rij tussen de andere rijen.
Ik heb van alles geprobeerd. Maar krijg het niet werkend.
Kan iemand mij vertellen wat er mis is met mijn code en eventueel mij verbeteren? Ik ben een beginner met betrekking tot C# UI en TablePanels
Ik heb een TablePanel. Nou wil ik een extra rij invoegen met een aantal controls erbij wanneer een checkbox checked is. Dit gebeurd. Alleen de toegevoegde rij moet weer verwijderd worden wanneer de checkbox unchecked wordt. Dit gebeurt wel. Echter de table wordt steeds groter ipv weer terug naar de originele grootte. Dus dan heb ik een lege rij tussen de andere rijen.
Ik heb van alles geprobeerd. Maar krijg het niet werkend.
C#:
34
35
36
37
38
39
40
41
42
43
44
45
| private void MultipleDefects(object sender, EventArgs e) { int newRows = 0; CheckBox checkbox = (CheckBox)sender; if (checkbox.CheckState == CheckState.Checked) { newRows++; int row = QcTable_Panel.GetRow(checkbox); NewRowForDefect(row); } else if (checkbox.CheckState == CheckState.Unchecked) { int row = QcTable_Panel.GetRow(checkbox); RemoveRow(row); } } |
C#:
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
| private void NewRowForDefect(int rowPos) { QcTable_Panel.Height = QcTable_Panel.Height + 45; QcTable_Panel.RowCount = QcTable_Panel.RowCount + 1; QcTable_Panel.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F)); ComboBox DefectCombo = new ComboBox(); /*foreach (Defect d in qcc.GetPossibleDefects()) { DefectCombo.Items.Add(d.Name); }*/ DefectCombo.Items.Add("test"); DefectCombo.Items.Add("test2"); DefectCombo.Font = new System.Drawing.Font("Microsoft Sans Serif", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); DefectCombo.Size = new System.Drawing.Size(200, 22); //TextBox Quantity TextBox Quantity = new TextBox(); Quantity.Font = new System.Drawing.Font("Microsoft Sans Serif", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); Quantity.Size = new System.Drawing.Size(200, 22); //Combobox Level of Defect ComboBox LoD = new ComboBox(); LoD.Items.Add(2); LoD.Items.Add(3); LoD.Items.Add(4); LoD.Font = new System.Drawing.Font("Microsoft Sans Serif", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); LoD.Size = new System.Drawing.Size(200, 22); int rowIndex = rowPos + 1; QcTable_Panel.RowStyles.RemoveAt(rowIndex); for (int columnIndex = 0; columnIndex < QcTable_Panel.ColumnCount; columnIndex++) { var control = QcTable_Panel.GetControlFromPosition(columnIndex, rowIndex); QcTable_Panel.Controls.Remove(control); } for (int i = rowIndex; i < QcTable_Panel.RowCount; i++) { for (int columnIndex = 0; columnIndex < QcTable_Panel.ColumnCount; columnIndex++) { var control = QcTable_Panel.GetControlFromPosition(columnIndex, i); if (control != null) { QcTable_Panel.SetRow(control, i); } } } QcTable_Panel.Controls.Add(DefectCombo, 1, rowPos + 1); QcTable_Panel.Controls.Add(Quantity, 2, rowPos + 1); QcTable_Panel.Controls.Add(LoD, 3, rowPos + 1); } |
C#:
112
113
114
115
116
117
118
119
120
121
122
123
124
125
| private void RemoveRow(int rowPos) { QcTable_Panel.RowStyles.RemoveAt(rowPos + 1); int index = rowPos + 1; for (int columnIndex = 1; columnIndex < 4; columnIndex++) { var control = QcTable_Panel.GetControlFromPosition(columnIndex,index); if (control != null) { QcTable_Panel.Controls.Remove(control); } } QcTable_Panel.RowCount = QcTable_Panel.RowCount - 1; } |
Kan iemand mij vertellen wat er mis is met mijn code en eventueel mij verbeteren? Ik ben een beginner met betrekking tot C# UI en TablePanels