Как установить ErrorProvider значок слева для всех элементов управления программно

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

  •  30-09-2019
  •  | 
  •  

Вопрос

Мы используем полученные классы формы, с одним классом базового формы для нашего программного обеспечения.

На производных формах мы широко используем DATANDINDINGINGINGINGS, чтобы иметь дело с нашими бизнес-компанией, все реализующие IDATATARRORINFO, бросая пользовательские сообщения об ошибках на ложных входах в графический интерфейс с помощью CurricProviders.

Теперь я ищу способ реализации функции в классе Base-Form, чтобы получить все компоненты ErrorProVider в форме и устанавливать iconAlignment для каждого элемента управления в виде налевающегося (поскольку справа - это проблема с интервалом).

Любые подсказки приветствуются ...

Код для установки iconalignment:

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

    foreach (Control subControl in control.Controls)
    {
        SetErrorProviderIcon(errorProvider, subControl);
    }
}
Это было полезно?

Решение

Мы использовали унаследованные ErrorProvider Компонент вместо этого, который насильственно устанавливает / возвращает значение по умолчанию для расширенного свойства iconalignment.

Например

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

Тогда вы можете легко сделать поиск / заменить на new ErrorProvider() и заменить с помощью new MyErrorProvider().

Я не могу точно вспомнить, но вы можете обнаружить, что вам может потребоваться открыть дизайнер формы, чтобы получить его для повторной повторной реализации значения, передаваемого в SetIconAlignment в form.designer.cs Файлы ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top