我用Windows 7上的一些按钮编写了一个C#Windows Forms程序。这些按钮使用内置的Aero样式,包括悬停和按下状态,但是它们不能像其他程序中的按钮一样在不同状态之间平滑淡入淡出。相反,它们只是立即过渡到新状态。我希望他们使用默认的Aero转场制作动画。
dependentAssembly
上指定了Microsoft.Windows.Common-Controls
。Application.EnableVisualStyles()
。Application.RenderWithVisualStyles
为true
。答案 0 :(得分:2)
多亏了Matheus Pratta(出于某种原因)YouTube video,我才知道我必须对我不想破坏动画的每个按钮控件分别设置属性ButtonBase.FlatStyle = FlatStyle.System
。>
要修复表单中的所有控件,可以在Visual Studio表单设计器中多选它们,然后使用“属性”面板。
或者,您可以使用循环来以程序形式修复所有控件。
InitializeComponent();
foreach (Control control in Controls)
{
if (control is ButtonBase buttonControl)
{
buttonControl.FlatStyle = FlatStyle.System;
}
}
仅仅为了使动画不中断而必须执行此操作似乎非常荒谬。我的应用程序很简单,只有一种形式,但是如果您有多种形式,则需要一种在整个应用程序中应用此修复程序的方法。如果您的类继承结构不允许您将此修复程序添加到超类怎么办,可能是因为您的表单类继承自各种不可更改的(可能是第三方)超类?您可以提取一个辅助方法,但是当您创建一个新的表单类而忘记调用该辅助方法时该怎么办呢?
应该有一种方法来选择FlatStyle.System
作为应用程序范围的设置,并且甚至可以默认启用它,因为操作系统中的所有其他程序都在其按钮上使用这些动画。