ich habe ein Problem unzwar habe ich ein Programm, welches GPS Daten über die COM Schnittstelle einliest, diese dann verarbeitet und in einen dataGridView ausgibt. Das funktioniert auch soweit. Aber wenn ich die Verarbeitung starte und das dataGridView dann ca. 2 Einträge habe und dann Stoppe stürtz das Programm bei folgender Zeile ab:
bnt_stop.Visible = false;
mit folgendem Fehler:
Fehler |
Ein Ausnahmefehler des Typs "System.IndexOutOfRangeException" ist in System.Windows.Forms.dll aufgetreten. |
Zusätzliche Informationen: Der Index -1 hat keinen Wert.
Mein Problem ist, dass ich keine Ahnung habe was bei dem Button, der übrigens mit dem Designer erstellt wurde, der Index sein soll.
Was ich bis jetzt herausgefunden habe ist, dass wenn ich das dataGridView nicht fülle(bzw. keine Daten über die Com Schnittstelle empfange) ich auch kein Absturz habe.
hier der Code der Buttons bnt_start und bnt_stop:
private void bnt_stop_Click(object sender, EventArgs e)
{
//try
//{
//try
//{
bnt_start.Visible = true;
//new Fehler("" + bnt_Stop.ToString()+ "|" + bnt_Stop.Controls.ToString());
[COLOR] bnt_stop.Visible[/COLOR] = false;
//}
//catch { throw new ArgumentException("Button Visible Fehler"); }
log.LoggingAktiv = false;
ToolstripCOMPort(false);
serialPort.CloseCOMPort();
/*}
catch (Exception ex)
{
//toolStripStatusLabel2.Text = ex.Message;
bnt_stop.Visible = true;
bnt_start.Visible = false;
log.LoggingAktiv = true;
ToolstripCOMPort(true);
new Fehler("Stop Button konnte nicht komplett verarbeitet werden. Fehlertext: " + ex.Message);
MessageBox.Show("Fehler beim Schließen des COM Ports", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
}*/
}
private void bnt_start_Click(object sender, EventArgs e)
{
try
{
string settings = loadSettings();
if (settings != null && settings != "")
{
serialPort = new SerialPortverwal(settings);
}
serialPort.DataReceived += serialPort_DataReceived;
bnt_stop.Visible = true;
bnt_start.Visible = false;
log.LoggingAktiv = true;
ToolstripCOMPort(true);
Properties.Settings.Default.positionGPSData = 0;
Properties.Settings.Default.Save();
listGPSData = new List<GPSData>();
dataGridView1.DataSource = new List<GPSData>();
dataGridView1.DataSource = listGPSData;
}
catch(Exception ex)
{
//toolStripStatusLabel2.Text = ex.Message;
bnt_stop.Visible = false;
bnt_start.Visible = true;
log.LoggingAktiv = false;
ToolstripCOMPort(false);
if (serialPort != null)
if (serialPort.isOpen)
serialPort.CloseCOMPort();
new Fehler("Start Button konnte nicht komplett verarbeitet werden. Fehlertext: " + ex.Message);
MessageBox.Show("Fehler beim Öffnen des COM Ports", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Hier die Oberfläche, damit man sich es besser vorstellen kann.:
Wenn ihr noch mehr Infos braucht dann bitte melden.
Gruß Thomas