Non ho nemmeno un'idea su dove cercare di correggere questo errore. Recentemente vengo seguente eccezione dopo che ho cliccato sulla casella di controllo in una DataGridViewCheckBoxColumn
per controllare e lasciare quella cella:DataGridViewCheckBoxColumn: FormatException su boolean-column
System.FormatException: "" non è valido per booleano
Ecco la completa finestra di errore dal DataGridView
:
ho anche non so quale evento ho potuto gestire per trovare il motivo per questa edizione. Gli eventi Validating
e CellFormatting
vengono attivati prima dell'errore, ma entrambi vengono eseguiti. Se gestisco il file DataError
, non riesco ancora a capirlo. L'argomento DataGridViewDataErrorEventArgs
contiene informazioni seguenti (tra gli altri):
e.ColumnIndex = 0
e.RowIndex = 0
e.Context = Commit
L'eccezione completo (e.Exception.ToString()
) è:
System.FormatException: non è un valore valido per booleano. ---> System.FormatException: String non è stato riconosciuto come booleano valido. al System.Boolean.Parse (valore String) a System.ComponentModel.BooleanConverter.ConvertFrom (ITypeDescriptorContext contesto, CultureInfo, Object value) --- Fine stack eccezione interna --- in System.ComponentModel. BooleanConverter.ConvertFrom (ITypeDescriptorContext contesto, CultureInfo, Object value) a System.ComponentModel.TypeConverter.ConvertFrom (Object value) a System.Windows.Forms.DataGridView.DataGridViewDataConnection.PushValue (Int32 boundColumnIndex, Int32 columnIndex, Int32 rowIndex , Valore dell'oggetto)
Ecco uno screenshot delle proprietà delle colonne pertinenti, la colonna ha ThreeState=false
e niente specificato per FalseValue
, TrueValue
o IndeterminateValue
:
L'origine dati del BindingSource
è un List<ErpService.ArrivalChargeAssignment>
dove ArrivalChargeAssignment
è una classe dalla mia WCF webservice con un campo bool
IsAssigned
, quindi non può mai essere null
(o anche una stringa vuota).
Ricordo di aver ricevuto un errore come questo (sebbene non proprio lo stesso messaggio) quando il nostro team stava lavorando a un progetto legacy. Si è scoperto che c'era una sorta di condizione di competizione in corso - la fonte dei dati veniva cambiata/letta in più thread diversi e il controllo non gli piaceva. Ci abbiamo dedicato molto tempo, ma non siamo riusciti a capire cosa lo causasse (anche le serrature non sono state d'aiuto). Alla fine abbandonammo WinForms e passammo a WPF.Probabilmente non è la risposta che stavi cercando, ma se è un progetto nuovo di zecca ne varrà la pena scriverlo in WPF. – PoweredByOrange
Stavo ricevendo lo stesso errore ogni volta che DGV tenta di formattare il valore nel formato di tipo di dati specificato. non ho potuto risolvere questo problema Quindi, ho gestito l'evento 'DataError' per evitare questa eccezione. – Shell
@Nimesh: Sì, forse ingoio anche questa eccezione anche se non mi piace ignorare le eccezioni tanto più se non ne conosco il motivo. –