Я написал программу С# для Windows Forms с некоторыми кнопками в Windows 7. Кнопки используют встроенный стиль Aero, включая состояния наведения и нажатия, но они не плавно переходят между различными состояниями, как кнопки в других программах. Вместо этого они просто сразу переходят в новое состояние. Я хочу, чтобы они анимировались с переходами Aero по умолчанию.
dependentAssembly
для Microsoft.Windows.Common-Controls
.Application.EnableVisualStyles()
прежде чем показывать какие-либо формы.Application.RenderWithVisualStyles
было true
. Благодаря видео Матеуса Пратты (по какой-то причине) на YouTube я узнал, что мне нужно индивидуально установить свойство ButtonBase.FlatStyle = FlatStyle.System
для каждого из моих элементов управления кнопками, чтобы не ButtonBase.FlatStyle = FlatStyle.System
анимации.
Чтобы исправить все элементы управления в форме, можно выбрать их несколько раз в конструкторе форм Visual Studio и использовать панель "Свойства".
Кроме того, вы можете использовать цикл для процедурного исправления всех элементов управления в форме.
InitializeComponent();
foreach (Control control in Controls)
{
if (control is ButtonBase buttonControl)
{
buttonControl.FlatStyle = FlatStyle.System;
}
}
Кажется очень смешным, что вам придется делать это только для разрыва анимации. Мое приложение простое и имеет одну форму, но если у вас много форм, вам нужен способ применить это исправление для всего приложения. Что если ваша структура наследования классов не позволяет вам добавить это исправление в суперкласс, возможно потому, что ваши классы форм наследуются от множества неизменяемых (возможно, сторонних) суперклассов? Вы можете извлечь вспомогательный метод, но что делать, когда вы создаете новый класс формы и забываете вызывать вспомогательный метод?
Должен быть способ выбрать FlatStyle.System
в качестве параметра для всего приложения, и он может быть даже включен по умолчанию, потому что каждая другая программа в ОС использует эти анимации на своих кнопках.