Databinding ed ErrorProvider: come fornire messaggi di errore personalizzati?
-
23-09-2019 - |
Domanda
Utilizziamo BusinessObjects, implementando IDataErrorInfo
e IEditableObject
. BindingList
S con quegli oggetti vengono aggiunti a bintingursurces, quelli vengono utilizzati per vincolare UserControls e DataGrids sui moduli (Winforms). Il BindingSource
è inoltre impostato come dati dati su ErrorProvider
della forma.
Usiamo attualmente caselle di testo per le proprietà di tipo int e brevi. Sono validati all'interno degli BusinessObjects con convalida personalizzata, come i valori min/max, ecc. Che funziona bene, poiché il messaggio di errore è la nostra convalida personalizzata viene visualizzata bene accanto alla casella di testo.
Tuttavia, se l'input è maggiore del valore di un INT (ad es. "9999999999"), la botta di bintings non cerca nemmeno di inserire quel valore in BusinesObject ma fornisce invece l'errarmatura a ErrorProvider come "Il valore per INT32 era troppo grande . ". Non vogliamo disturbare i nostri utenti con "Int32" ma vogliamo un errormatura personalizzato per questo.
È bello, che BintingsOurce fornisca questa funzione, ma è possibile fornire messaggi di errore personalizzati per questo?
Soluzione
Devi impostare Formattingenabled Proprietà a false per disabilitare il comportamento di gestione degli errori.
Come questo:
textBox1.DataBindings.Add("Text", bindingSource1, "IntValue", false,
System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged);