Создал собственный Control для всех кнопок, чтобы все кнопки имели графический вид. Пример кода:
public class FlatButton : Control
{
/// <summary>
/// Backaground for non active button.
/// </summary>
public Image backgroundNormal { get; set; }
/// <summary>
/// Background for active button.
/// </summary>
public Image backgroundActive { get; set; }
/// <summary>
/// Background for hover/pressed button.
/// </summary>
public Image backgroundHover { get; set; }
public FlatButton()
{
// Nothing
}
protected override void OnMouseLeave(EventArgs e)
{
base.OnMouseLeave(e);
base.BackgroundImage = backgroundNormal;
}
protected override void OnMouseHover(EventArgs e)
{
base.OnMouseHover(e);
base.BackgroundImage = backgroundHover;
}
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
base.BackgroundImage = backgroundActive;
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
base.BackgroundImage = backgroundHover;
}
}
Однако в приложении замечена задержка (где-то 300-400 мс) на вызов всех событий OnMouse(). Возможно ли её убрать в WinForms проекте?
С задержкой происходит событие Hover. Это его стандартное поведение.
Полагаю, вам нужно заменить OnMouseHover на OnMouseEnter - это событие будет срабатывать сразу же.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости