Entwickler-Ecke

Sonstiges (.NET) - DataGridView und einen Fehler abfangen...


tomycat - Mo 16.05.16 22:29
Titel: DataGridView und einen Fehler abfangen...
hallo,
ich habe ein wunderschönes DatagridView Diagramm. Ich klicke in eine Zeile und es wird davon erste Pos. geladen und weiterverarbeitet. Das klappt ganz gut bis jetzt.
Wenn ich auf die Kopfleiste klicke, dann kommt es zum Abstutz.


C#-Quelltext
1:
2:
3:
4:
Point p = dataGridView2.PointToClient(Cursor.Position);
DataGridView.HitTestInfo hit = dataGridView2.HitTest(p.X, p.Y);

textBox50.Text = dataGridView2.Rows[hit.RowIndex].Cells[0].Value.ToString();

Was muss ich ändern, dass die Kopfleiste sowie das sorieren nach Rubriken bzw der Code funkt?

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Beitragsformatierung überarbeitet.


Ralf Jansen - Mo 16.05.16 22:32

HitTestInfo hat eine Type [https://msdn.microsoft.com/de-de/library/system.windows.forms.datagridview.hittestinfo.type(v=vs.110).aspx] Property die du abfragen solltest um rauszufinden was du den genau getroffen hast.


Th69 - Di 17.05.16 09:22

Die Eigenschaft hit.RowIndex wird dann -1 sein.

PS: Abstürze gibt es unter .NET (eigentlich) nicht, d.h. es wird eine Exception geworfen (und diese solltest du untersuchen und dann hier posten).


tomycat - Mi 18.05.16 21:33


C#-Quelltext
1:
2:
3:
4:
5:
6:
Point p = dataGridView2.PointToClient(Cursor.Position);
DataGridView.HitTestInfo hit = dataGridView2.HitTest(p.X, p.Y);
if(hit.RowIndex > 0)     /////////////////////////////////////////// Löst alle Probleme
{
textBox50.Text = dataGridView2.Rows[hit.RowIndex].Cells[0].Value.ToString();
//...............


Ralf Jansen - Mi 18.05.16 21:41

Ich gehe mal davon aus das die erste Zeile RowIndex 0 hat und entsprechend deinem Code nicht mehr anklickbar ist.


tomycat - Mi 25.05.16 10:49

ok, ich muss -1 nehmen, weil sonst die erste Zeile nicht mehr funkt

C#-Quelltext
1:
if(hit.RowIndex > -1)     /////////////////////////////////////////// Löst alle Probleme                    


hab gerade gehen, wenn ich die letzte Zeile (leer) anklicke, kommt es zum Crash, wie ich kann ich das abfangen?


Th69 - Mi 25.05.16 10:56

Hallo tomycat,

ich wiederhole mich mal:
Th69 hat folgendes geschrieben:
Abstürze gibt es unter .NET (eigentlich) nicht, d.h. es wird eine Exception geworfen (und diese solltest du untersuchen und dann hier posten).

Als Ergänzung (besser formuliert):
Abstürze gibt es unter .NET (eigentlich) nicht, d.h. es wird eine Exception geworfen (und diese solltest du untersuchen und dann, wenn du selber nicht weiterkommst, hier posten).


Ralf Jansen - Mi 25.05.16 14:55

Zitat:
hab gerade gehen, wenn ich die letzte Zeile (leer) anklicke


Wenn das die NewItem Row ist dann gibt es für diese Zeile keine Row dann sollte du also nicht nur auf >=0 testen sondern auch auf < Rows.Length.