ich habe in meiner Anwendung - erstellt mit VS2017 - ein ToolStripStatusLabel, das mit einem Text vorbelegt ist: "-". In dieses Label werden im Verlauf die Koordinaten der CurrentCell einer Tabelle eingetragen, das ging über 7 Jahre auch ohne Probleme. Ich habe jetzt einige Variablennamen global geändert ... und schon gibt's Ärger.
/// <summary>
/// Setzt System-Variablen und Statusanzeige auf die Adresse der aktiven Zelle
/// </summary>
/// <date>210406-2330</date>
void SetStatusLabel() // Anzeige der Statusleiste setzen
{
DataGridView dgv = a_Dgv[aSTab]; // a_Dgv: DGV-Array
DataGridViewCell dgvc = dgv.CurrentCell; // dgvc: DGV-Zelle CurrentCell
actCol[aSTab] = actC = dgvc.ColumnIndex; // aktuelle CurrentColumn
tsslColValue.Text = actC + 1 + "/" + dgv.ColumnCount; // ToolStripStatusLabel: Text eintragen -> FEHLER!
actRow[aSTab] = actR = dgvc.RowIndex; // aktuelle CurrentRow
tsslRowValue.Text = actR + 1 + "/" + dgv.RowCount; // ToolStripStatusLabel: Text eintragen -> FEHLER!
if (dgvc != null && dgvc.Value != null) // wenn CurrentCell und CC-Value != null...
tsslWertValue.Text = (dgvc.Value + "").Replace("&", "&&"); // Ampersand im Text ersetzen
ststMid.Refresh(); // Aktualisieren
}
Folgende Fehlermerldung:
Fehler |
StackTrace: System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. bei trotto.Trotto.SetStatusLabel() in ...\Trotto.cs:Zeile 769. (Das ist die erste tssl-Zeile, 11) |
Nur ist da nix null. Das einzige, das null sein könnte, ist dgv.ColCount und .RowCount, die sind aber klar definiert != null: Wert = 6 bzw. 1.
In Zeile 11 bzw. 14 (tssl) springt der Debugger dann in den Disassembler. Siehe Anhang.
Was also ist da los? Was übersehe ich? Es hatte doch funktioniert, warum jetzt nicht mehr?
Ich habe die Screenshots vom Disassembler und der Aufrufliste angehängt.