2009-09-09 17 views
8

¿Se puede usar la información de IDataError correctamente en una aplicación de winforms? En el pasado, estaba haciendo mi enlace de la forma habitual (1) e hice la validación en el evento OnValidating del control particular. Me gustaría mover la validación de datos al modelo de dominio para poder intercambiar fácilmente las interfaces de usuario y para que toda la lógica esté en un solo lugar.IDataErrorInfo en winforms

Estaba buscando en IDataErrorInfo pero todo lo que encuentro se relaciona con WPF y la aplicación en desarrollo es estrictamente una aplicación de winforms.

También noté que el enlace que se utiliza en WPF está en System.Windows.Data y el enlace que siempre he estado utilizando está en System.Windows.Forms (que no parece tener cuando intente agregarlo como recurso - Estoy usando 3.5). Al lado de la propiedad "ValidatesOnDataErrors" ¿hay alguna diferencia entre los dos?

(1) el ser forma habitual:

myControl.DataBindings.Add(new Binding("Text", this.domainModel, "Property")); 

Respuesta

9

Esto funciona con el componente ErrorProvider en Windows Forms.

Para obtener un tutorial completo, pero muy simple y breve, vea this blog post.

+0

+1 Fantastic blog post. Curado todos mis problemas actuales. Muchas gracias. –

+4

Parece que el enlace a la * fantástica publicación de blog * está roto: haciendo que este enlace solo responda obsoleto. –

+0

@ Bjørn-RogerKringsjå En realidad, no es una respuesta de solo enlace. La sugerencia sobre 'ErrorProvider' hace de esto una respuesta sin el enlace. – Taryn

1

Sí, IDataErrorInfo obras en WinForms. Por ejemplo, DataGridView usará esto automáticamente tanto por fila como por celda. Pero es específico de la implementación y no es automáticamente aplicado a otras vinculaciones. Una vez escribí un código para asociarlo a un proveedor de errores y hago el trabajo a través de eventos de cambio, pero no lo tengo a mano desafortunadamente. Pero parece recordar que no era enorme.