Как установить ErrorProvider значок слева для всех элементов управления программно
-
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
Файлы ...