Domanda

Ho una casella di testo associata alla proprietà di un oggetto (in effetti diverse caselle di testo) su un modulo. Questo per è un editor per un oggetto. Quando sto modificando alcuni oggetti e modifico i valori in una delle caselle di testo, non posso uscire dalla casella di testo (né per tabulazione né facendo clic su un'altra casella di testo). Tuttavia, non è sempre così: quando si modificano altri oggetti (dello stesso tipo) funziona perfettamente.

Ecco uno snipet di codice:

txtValue.DataBindings.Add("Text", _SourceObject, "PlannedValue", True, DataSourceUpdateMode.OnPropertyChanged, Nothing, "c")
txtEstPlacements.DataBindings.Add("Text", _SourceObject, "EstimatedPlacementCount")
txtReference.DataBindings.Add("Text", _SourceObject, "Reference")

Qualche suggerimento?

È stato utile?

Soluzione

Sembra un problema di convalida dei dati. Controlla se i controlli nel modulo hanno le proprietà CauseValidation impostate su true o false.

Controlla anche la proprietà AutoValidate sul modulo. Probabilmente è impostato su EnablePreventFocusChange (che è l'impostazione predefinita).

È possibile che il valore fornito nella casella di testo non possa essere convertito nel tipo di proprietà a cui è associato sull'oggetto dati di origine. Credo che la classe Convert sia usata per questo (anche se qui potrei sbagliarmi).

Potresti voler leggere questo articolo su MSDN che copre validazione di winforms in alcuni dettagli.

Altri suggerimenti

Se il tuo modulo ha AutoValidate == EnablePreventFocusChange, finirai con il focus bloccato in qualsiasi campo che fallisce la validazione.

Nota che la validazione è considerata fallita se c'è un'eccezione quando si scrive il valore nell'oggetto.

Prova a impostare un punto di interruzione nel punto di ingresso del setter della proprietà associato al controllo in cui si blocca il cursore. Quindi, passo singolo per vedere se viene sollevata un'eccezione.

Se il punto di interruzione non si attiva mai, è possibile che si verifichi un'eccezione all'interno del framework Databinding.

Contrariamente a quanto si crede, il framework di banca dati registra errori e altre informazioni utili - per fare ciò utilizza il supporto dello spazio dei nomi System.Diagnostics. Ho dimenticato i dettagli, ma sono su MSDN: dovresti essere in grado di visualizzare la diagnostica nella finestra dei messaggi di Visual Studio mentre l'applicazione è in esecuzione. Molto utile per la risoluzione dei problemi con Databinding.

Per correggere l'errore di convalida, dovuto all'incapacità del database di impostare DBNull.Value in textbox.text, è possibile aggiungere la seguente riga nella sezione Form_Load:

TextBox1.DataBindings["Text"].NullValue = string.Empty;

per ogni casella di testo che si desidera consentire la validazione corretta di un valore vuoto.

Vedi maggiori dettagli su Microsoft Connect .

e su:

Impossibile uscire dalla casella di testo vuota

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top