Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    [VB.NET] Inspiegabile StackOverflowException

    Salve a tutti.
    Sto tentando di effettuare una delle più semplici operazioni che si possano eseguire.
    A voi il codice e l'ardua sentenza:

    codice:
    Dim myCell As New DataGridCell
    myCell.ColumnNumber = DataGrid1.CurrentCell.ColumnNumber
    myCell.RowNumber = DataGrid1.CurrentCell.RowNumber
    DataGrid1.Item(myCell) = "Stringa"
    Mi restituisce una bella System.StackOverflowException.
    Teoricamente non dovrebbe...
    Come mai?
    Vi ringrazio in anticipo.
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  2. #2
    Utente di HTML.it L'avatar di Sypher
    Registrato dal
    Jun 2003
    Messaggi
    1,994
    A me mi funzica! L'unico problema è se sto su una cella con un valore numerico ovviamente!
    La passera non dura perchè Sypher la cattura!

    "No one like us we don't care, we are millwall, super millwall, we are millwall from the DEN"

  3. #3
    A me no!

    Questo è il mio codice (un pò lungo, ma niente di che...):

    codice:
    Public DataGrid1 As DataGrid
    Public WithEvents tabellaDatiDocumento As DataTable
    
    Private Sub initComponenti()
    
         Me.DataGrid1 = New DataGrid
         Me.Controls.Add(DataGrid1)
         Me.tabellaDatiDocumento = New DataTable("Documento")
    
         'Ok, creiamo un paio di colonne
         Dim colonnaDocumento As DataColumn
         Dim rigaDocumento As DataRow
    
         'Creo la colonna per il Codice
         colonnaDocumento = New DataColumn
         colonnaDocumento.DataType = System.Type.GetType("System.String")
         colonnaDocumento.ColumnName = "Codice"
         colonnaDocumento.Caption = "Codice"
         tabellaDatiDocumento.Columns.Add(colonnaDocumento)
    
         'Creo la colonna per la Descrizione
         colonnaDocumento = New DataColumn
         colonnaDocumento.DataType = System.Type.GetType("System.String")
         colonnaDocumento.ColumnName = "Descrizione"
         colonnaDocumento.Caption = "Descrizione"
         tabellaDatiDocumento.Columns.Add(colonnaDocumento)
    
         'Il mio dataset...
         Dim dataSetDocumento = New DataSet("Documento")
         DataGrid1.SetDataBinding(dataSetDocumento, "Documento")
         Me.DataGrid1.DataSource = tabellaDatiDocumento
         dataSetDocumento.Tables.Add(tabellaDatiDocumento)
         '... e l'handler per gestire l'evento.
         AddHandler tabellaDatiDocumento.ColumnChanged, AddressOf Table_CurColChange
    
    End Sub
    Ed ecco il nocciolo del problema:

    codice:
    Public Sub Table_CurColChange(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)
         If DataGrid1.CurrentCell.ColumnNumber = 0 Then
              Dim myColumnNumber As Integer = DataGrid1.CurrentCell.ColumnNumber
              Dim myRowNumber As Integer = DataGrid1.CurrentCell.RowNumber
              Dim myCell As New DataGridCell
              myCell.RowNumber = myRowNumber
              myCell.ColumnNumber = 1 'che dovrebbe far riferimento alla colonna descrizione!
              Me.DataGrid1.Item(myCell) = "Prova"
         End If
    End Sub
    E mi lancia l'eccezione...
    Come mai?
    Grazie per l'aiuto!
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  4. #4
    Utente di HTML.it L'avatar di Sypher
    Registrato dal
    Jun 2003
    Messaggi
    1,994
    Ho copiato il tuo codice,o meglio questa parte:
    If DataGrid1.CurrentCell.ColumnNumber = 0 Then
    Dim myColumnNumber As Integer = DataGrid1.CurrentCell.ColumnNumber
    Dim myRowNumber As Integer = DataGrid1.CurrentCell.RowNumber
    Dim myCell As New DataGridCell
    myCell.RowNumber = myRowNumber
    myCell.ColumnNumber = 1 'che dovrebbe far riferimento alla colonna descrizione!
    Me.DataGrid1.Item(myCell) = "Prova"
    End If

    e non so come aiutarti perchè a me funziona,infatti mi ha scritto "Prova" nella seconda colonna!
    La passera non dura perchè Sypher la cattura!

    "No one like us we don't care, we are millwall, super millwall, we are millwall from the DEN"

  5. #5
    E' proprio questo il fatto agghiaciante!

    Non so proprio dove sbattere la testa.
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  6. #6
    Utente di HTML.it L'avatar di Sypher
    Registrato dal
    Jun 2003
    Messaggi
    1,994
    Ma l'errore esattamente quando te lo da sulla riga myCell.ColumnNumber = 1 o quella successiva?
    La passera non dura perchè Sypher la cattura!

    "No one like us we don't care, we are millwall, super millwall, we are millwall from the DEN"

  7. #7
    Me lo da su qualsiasi indice specifichi per la proprietà myCell.ColumnNumber.
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  8. #8
    Ho notato un particolare.
    Scrivendo così:

    codice:
    Dim myColumnNumber As Integer = Me.DataGrid1.CurrentCell.ColumnNumber
    Dim myRowNumber As Integer = Me.DataGrid1.CurrentCell.RowNumber
    Dim myCell As New DataGridCell
    myCell.RowNumber = myRowNumber
    myCell.ColumnNumber = 0
    Console.WriteLine(Me.DataGrid1.Item(myCell))
    Il risultato nella finestra di console corrisponde effettivamente al codice che ho inserito.
    Di conseguenza trovo incredibilmente strano che scrivendo come segue...

    codice:
    Dim myColumnNumber As Integer = Me.DataGrid1.CurrentCell.ColumnNumber
    Dim myRowNumber As Integer = Me.DataGrid1.CurrentCell.RowNumber
    Dim myCell As New DataGridCell
    myCell.RowNumber = myRowNumber
    myCell.ColumnNumber = 0
    Me.DataGrid1.Item(myCell) = "Prova"
    ... mi venga sollevata l'eccezione!
    Mi chiedo il perchè, ci sto diventando pazzo.
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  9. #9
    Probabilmente impostando la proprietà myCell.ColumnNumber vai a generare ancora l'evento Table_CurColChange, questo spiegherebbe quel tipo di errore sullo stack.
    Chi non cerca trova.

  10. #10
    Originariamente inviato da tas
    Probabilmente impostando la proprietà myCell.ColumnNumber vai a generare ancora l'evento Table_CurColChange, questo spiegherebbe quel tipo di errore sullo stack.
    Non saprei...
    Ho notato che l'eccezione mi viene sollevata solo quando va in esecuzione la seguente riga:

    codice:
    Me.DataGrid1.Item(myCell) = "Prova"
    Omettendola, l'eccezione non si manifesta...
    Adesso faccio qualche altra prova.
    Grazie.
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.