我有一个按钮,并在我的按钮,我有一个图像控制。当用户点击图片时,我想为按钮设置动画效果,这样看起来按钮被按下了。我真的不在乎实际的按钮按下事件是否触发 - 这是我想看到的按钮按下的幻觉。模拟Winforms按钮点击动画
注意:我在网上看到的唯一选项涉及直接写入Windows API - 复杂性和非可升级性的级别,我真的不想进入。
我有一个按钮,并在我的按钮,我有一个图像控制。当用户点击图片时,我想为按钮设置动画效果,这样看起来按钮被按下了。我真的不在乎实际的按钮按下事件是否触发 - 这是我想看到的按钮按下的幻觉。模拟Winforms按钮点击动画
注意:我在网上看到的唯一选项涉及直接写入Windows API - 复杂性和非可升级性的级别,我真的不想进入。
我最终通过给它一个凸起的边框样式让我的picturbox看起来像一个按钮。然后在mouseclick事件中,我通过将边框样式改变几百毫秒来模拟按钮的外观。
Private Sub simulateButtonPress(ByRef pictureBox As Infragistics.Win.UltraWinEditors.UltraPictureBox)
pictureBox.BorderStyle = Infragistics.Win.UIElementBorderStyle.Inset
Application.DoEvents()
System.Threading.Thread.Sleep(400)
pictureBox.BorderStyle = Infragistics.Win.UIElementBorderStyle.Raised
Application.DoEvents()
End Sub
为什么不只是使用两个不同的图像,一个用于正常状态,另一个用于按下按钮时。
如果你想要更复杂的路线尝试使用GDI +。以下是关于如何做到这一点的快速sample tutorial。
为什么在按钮控件中使用图像控件而不是使用button control's Image property?
使用按钮的图像属性将为您提供一个带有图像的按钮,用户可以按下该图像并在不做任何额外工作或重新实现已有功能的情况下提升OnClick事件。
我试过了,但图像拉伸功能不足以处理我想要的东西。 – Jeff 2009-07-29 15:44:35
实际上找到了一个更好的解决方案 - 将Insert插入到MouseDown发明和Raised int mouseUp事件中 - 然后绑定到按下鼠标按钮的时间。 (就像真正的按钮工作)。这还可以防止在第一次模拟点击仍在运行时发生第二次点击。 – Jeff 2009-07-29 15:56:04