Hallo gemeinsam!
Ich habe ein Problem mit einem Gridview - element. Es ist so, dass meine Gridview nicht aus einer Datasource versorgt wird (weil sonst andere Funktionen , die ich bereits implementiert habe, nicht mehr funktionieren würden), sondern aus mehreren Arrays und die Daten aus dem Array ständig mit den Daten aus dem DataGridview - element synchronisiert werden müssen. Jetzt möchte ich, dass der Benutzer mehrere Zeilen (z.B. 2,4,7) markieren und löschen kann.
Hier ist nun das Problem: ich kopiere die vom benutzer markierten zeilen in eine Variable und möchte diese mit einer SChleife löschen. Das funktioniert für die 1. zeile des Arrays tadelos, im 2. und 3. Durchlauf der Schleife wird er Arrayindex auf -1 gesetzt und die schleife wird nicht durchlaufen. Was mache ich falsch?
Hier ist meine Funktion:
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: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69:
| private void deleteRowToolStripMenuItem_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { int anzahl = dataGridView1.SelectedRows.Count; var myRows = dataGridView1.SelectedRows;
for (int k = anzahl - 1; k >= 0; k--) { DataGridViewRow row = myRows[k]; if (row.Index >= 0 && row.Index < dataGridView1.Rows.Count) {
int realRunIndex = 0; int runIndex = (row.Index - 2) / 4; int[][][] originData = dataGridView1.Rows[row.Index].Tag as int[][][]; if (m_StepIndex < 3) { runIndex = runIndex + ((m_StepIndex) * 4); } else { switch (runIndex) { case 0: runIndex = 1; break; case 1: runIndex = 5; break;
case 2: runIndex = 9; break;
} }
if (originData.Length > runIndex && originData[runIndex] != null) realRunIndex = originData[runIndex][row.Index][1];
int peakIndex = 0; int changedPeakIndex = 0; if (originData.Length == 1) { peakIndex = ((int[])originData[0][row.Index])[0]; changedPeakIndex = ((int[])originData[0][row.Index])[2]; } else { peakIndex = ((int[])originData[runIndex][row.Index])[0]; changedPeakIndex = ((int[])originData[runIndex][row.Index])[2]; }
int[] indexArray = new int[Runs.Length]; for (int i = 0; i < Runs.Length; i++) { indexArray[i] = i; }
CommandManager.Execute(new ChangeDataEntryGridCommand(ChangedRuns, new ChangeDataEntryGridCommand.DoSomething(RemoveAllPeaks), new object[] { indexArray, changedPeakIndex })); } } } buildTable(); } |
ich hoffe, jemand von Euch kann mir helfen... danke bereits im voraus
Moderiert von
Christian S.: C#-Tags hinzugefügt