Domanda

Utilizziamo BusinessObjects, implementando IDataErrorInfo e IEditableObject. BindingListS 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?

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top