Cómo establecer ErrorProvider icono de la izquierda para todos los controles mediante programación

StackOverflow https://stackoverflow.com/questions/2864638

  •  30-09-2019
  •  | 
  •  

Pregunta

Uso Derivados clases sintácticas, la clase forman una base para nuestro software.

En las formas derivadas de enlace de datos que utilizamos ampliamente para tratar con nuestros BusinessObjects, toda aplicación IDataErrorInfo, lanzando personalizados de error-mensajes en las entradas falsas a la interfaz gráfica de usuario con ErrorProviders.

Ahora busco una forma de implementar una función de la forma de la clase base para obtener toda ErrorProvider-componentes en un formulario y establecer el IconAlignment para cada control en el formulario a la izquierda (desde la derecha es la distancia del problema) .

¿Alguna pista bienvenida ...

Código de Ajuste de la IconAlignment:

private void SetErrorProviderIconAlignment(ErrorProvider errorProvider, Control control)
{
    errorProvider.SetIconAlignment(control, ErrorIconAlignment.MiddleLeft);

    foreach (Control subControl in control.Controls)
    {
        SetErrorProviderIcon(errorProvider, subControl);
    }
}
¿Fue útil?

Solución

Se utilizó un componente hereditario ErrorProvider vez que estableció la fuerza / devuelve el valor predeterminado para la propiedad IconAlignment extendida.

por ejemplo.

[ToolboxBitmap(typeof(ErrorProvider))]
[ProvideProperty("IconAlignment", typeof(Control))]
public class MyErrorProvider : ErrorProvider
{
    #region Base functionality overrides

    // We need to have a default that is explicitly different to 
    // what we actually want so that the designer generates calls
    // to our SetIconAlignment method so that we can then change
    // the base value. If the base class made the GetIconAlignment
    // method virtual we wouldn't have to waste our time.
    [DefaultValue(ErrorIconAlignment.MiddleRight)]
    public new ErrorIconAlignment GetIconAlignment(Control control)
    {
        return ErrorIconAlignment.MiddleLeft;
    }

    public new void SetIconAlignment(Control control, ErrorIconAlignment value)
    {
        base.SetIconAlignment(control, ErrorIconAlignment.MiddleLeft);
    }

    #endregion
}

A continuación, podría fácilmente hacer una búsqueda / reemplazo de new ErrorProvider() y reemplazar con new MyErrorProvider().

No puedo recordar exactamente, pero es posible que pueda necesitar para abrir el diseñador del formulario con el fin de conseguir que reserializar el valor pasado en SetIconAlignment en los archivos form.designer.cs ...

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