Pregunta

Tengo un cuadro de texto vinculado a la propiedad de un objeto (de hecho, varios cuadros de texto) en un formulario. Esto para es un editor para un objeto. Cuando estoy editando algunos objetos y modifico valores en uno de los cuadros de texto, no puedo salir del cuadro de texto (ni con pestañas ni haciendo clic en otro cuadro de texto). Sin embargo, no siempre es así, al editar otros objetos (del mismo tipo) funciona bien.

Aquí hay un fragmento de código:

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

¿Alguna sugerencia?

¿Fue útil?

Solución

Suena como un problema de validación de datos. Compruebe si los controles en el formulario tienen sus propiedades CausesValidation establecidas en verdadero o falso.

Verifique también la propiedad AutoValidate en el formulario. Probablemente esté configurado en EnablePreventFocusChange (que es el valor predeterminado).

También puede darse el caso de que el valor que se proporciona en el cuadro de texto no se pueda convertir al tipo de propiedad a la que está vinculado en el objeto de datos de origen. Creo que la clase Convert se usa para esto (aunque puedo estar equivocado aquí).

Puede consultar este artículo en MSDN que cubre Winforms validación en algunos detalles.

Otros consejos

Si su Formulario tiene AutoValidate == EnablePreventFocusChange, entonces terminará con el enfoque atascado en cualquier campo que falla la validación.

Tenga en cuenta que se considera que la validación ha fallado si hay una excepción al escribir el valor en el objeto.

Intente establecer un punto de interrupción en el punto de entrada del configurador de la propiedad que está vinculada al control donde el cursor se atasca. Luego, solo un paso para ver si se genera una excepción.

Si el punto de interrupción nunca se activa, la excepción puede estar ocurriendo dentro del marco de enlace de datos.

Contrariamente a la creencia popular, el marco de enlace de datos registra errores y otra información útil; utiliza el soporte del espacio de nombres System.Diagnostics para hacer esto. Olvidé los detalles, pero están en MSDN: debería poder ver los diagnósticos en la ventana de mensajes de Visual Studio mientras se ejecuta su aplicación. Muy útil para solucionar problemas con Databinding.

Para corregir el error de validación, que se debe a la incapacidad del enlace de datos para establecer DBNull.Value en el textbox.text, puede agregar la siguiente línea en la sección Form_Load:

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

para cada cuadro de texto que desee permitir que el valor vacío se valide correctamente.

Ver más detalles sobre Microsoft Connect .

y encendido:

No se puede escapar del cuadro de texto vacío

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top