System.InvalidOperationException

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    System.InvalidOperationException

    Mein Programm löst sporadisch den Fehler aus, ich selbst hatte ihn noch nicht und kann ich auch nicht reproduzieren.
    Könnt ihr mir weiterhelfen und sagen, woran das liegen könnte?

    Fehler:

    VB.NET-Quellcode

    1. ystem.InvalidOperationException: Die Zelle befindet sich nicht in einer DataGridView und kann den geerbten Zellstil nicht abrufen.
    2. bei System.Windows.Forms.DataGridViewCell.GetInheritedStyle(DataGridViewCellStyle inheritedCellStyle, Int32 rowIndex, Boolean includeColors)
    3. bei System.Windows.Forms.DataGridView.OnCellValidating(DataGridViewCell& dataGridViewCell, Int32 columnIndex, Int32 rowIndex, DataGridViewDataErrorContexts context)
    4. bei System.Windows.Forms.DataGridView.CommitEdit(DataGridViewCell& dataGridViewCurrentCell, DataGridViewDataErrorContexts context, DataGridViewValidateCellInternal validateCell, Boolean fireCellLeave, Boolean fireCellEnter, Boolean fireRowLeave, Boolean fireRowEnter, Boolean fireLeave)
    5. bei System.Windows.Forms.DataGridView.EndEdit(DataGridViewDataErrorContexts context, DataGridViewValidateCellInternal validateCell, Boolean fireCellLeave, Boolean fireCellEnter, Boolean fireRowLeave, Boolean fireRowEnter, Boolean fireLeave, Boolean keepFocus, Boolean resetCurrentCell, Boolean resetAnchorCell)
    6. bei System.Windows.Forms.DataGridView.SetCurrentCellAddressCore(Int32 columnIndex, Int32 rowIndex, Boolean setAnchorCellAddress, Boolean validateCurrentCell, Boolean throughMouseClick)
    7. bei System.Windows.Forms.DataGridView.set_CurrentCell(DataGridViewCell value)
    8. bei System.Windows.Forms.DataGridView.OnClearingRows()
    9. bei System.Windows.Forms.DataGridViewRowCollection.ClearInternal(Boolean recreateNewRow)
    10. bei PlayerDataTable._Closure$__.c47e400f9fb3730f8246e6175770b711a()


    PlayerDataTable

    VB.NET-Quellcode

    1. Imports CustomPackets
    2. Namespace Interface
    3. Public Class PlayerDataTable
    4. Public Shared Sub Update(list As List(Of Player))
    5. Main.PlayersList.BeginInvoke(Sub() Main.PlayersList.Rows.Clear())
    6. Dim i = 0
    7. Do While (i < list.Count)
    8. Dim player = list(i)
    9. Dim timeStr = TimeSpan.FromSeconds(player.ConnectedSeconds).ToString("hh\:mm\:ss")
    10. Dim h1() As String = player.Health.Split("."c)
    11. Dim h2() As String = player.Address.Split(":"c)
    12. AddNewEntry(i, player.DisplayName, timeStr, h1.First, player.Ping, player.SteamID, h2.First)
    13. i += 1
    14. Loop
    15. Try
    16. Main.PlayersList.Rows(Main.Rowindex.Text).Selected = True
    17. Catch
    18. End Try
    19. End Sub
    20. Public Shared Sub AddNewEntry(number As Integer, playerName As String, timeConnected As String, h1 As String, ping As Integer, steamId As String, h2 As String)
    21. Dim row = New DataGridViewRow
    22. row.CreateCells(Main.PlayersList, number, playerName, timeConnected, h1, ping, steamId, h2)
    23. Main.PlayersList.BeginInvoke(Sub() Main.PlayersList.Rows.Add(row))
    24. End Sub
    25. End Class
    26. End Namespace
    @Pixxxas In welcher Zeile Deines Codes wird der Fehler geworfen?
    Wie wäre es mit Option Strict On :?:
    Visual Studio – Empfohlene Einstellungen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Dann kennst Du ja nun Deine Aufgabe, Fehlerbote. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Arbeite mit einer zwischengeschalteten Datenquelle (DataTable, generische Liste, …) und nicht direkt im Grid. Diese kannst du dann an die Methoden übergeben und dort manipulieren. Dein jetziges Konstrukt Main.PlayersListsieht bissl Fragwürdig aus.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Die in Post#1 gezeigte Fehlermeldung ist unvollständig. Nach den gezeigten Zeilen kommt noch detailliert, in welcher Deiner Dateien, in welcher Methode und vor allem in welcher Zeile das Problem ausgelöst wird. Steht nämlich alles im StackTrace, der hier unvollständig von Dir oder Deinem Informationszulieferer mitgeteilt wurde.




    btw: Namespace Interface wird bei mir als unzulässiger Bezeichner angemeckert. Kommt mir daher komisch vor.
    Warum muss da mit BeginInvoke gearbeitet werden? Wenn da was nebenläufig abgeht, ist das schon mal ein eine mögliche Fehlerquelle, vor allem im Zusammenhang mit GUI-Operationen.
    Was ist das Main bei Main.PlayersList.BeginInvoke. Ein Form-Klassen-Name?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()