Frage

Wir verwenden Form-Klassen abgeleitet, mit einer Basisformularklasse für unsere Software.

Auf den abgeleiteten Formen verwenden wir Datenbindung ausgiebig mit unserer Business beschäftigen, alles IDataErrorInfo Implementierung werfen benutzerdefinierte Fehlermeldungen auf falsche Eingaben an die GUI mit ErrorProviders.

Ich suche jetzt nach einer Möglichkeit, eine Funktion in der Basisform-Klasse zu implementieren alle Errorprovider-Komponenten auf einem Formular zu erhalten und die IconAlignment für jedes Steuerelement auf dem Formular nach links gesetzt (da rechts ein Abstand-Problem ist) .

begrüßen alle Hinweise ...

-Code für die Einstellung der IconAlignment:

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

    foreach (Control subControl in control.Controls)
    {
        SetErrorProviderIcon(errorProvider, subControl);
    }
}
War es hilfreich?

Lösung

Wir haben eine erbliche Komponente ErrorProvider statt, die gewaltsam festgelegt / zurück die Standardeinstellung für die IconAlignment erweiterte Eigenschaft.

z.

[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
}

Dann könnte man leicht eine Suche / Ersetzen für new ErrorProvider() und ersetzt mit new MyErrorProvider().

Ich kann mich nicht mehr genau, aber Sie können feststellen, dass Sie der Designer-Formular zu öffnen, um möglicherweise zu erhalten, um den Wert in SetIconAlignment in den form.designer.cs Dateien weitergegeben neu serialisieren ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top