【问题标题】:How to handle MouseHover and MouseLeave events in a IconButton VB .NET WinForm如何在 IconButton VB .NET WinForm 中处理 MouseHover 和 MouseLeave 事件
【发布时间】:2020-07-12 05:06:39
【问题描述】:

我有一个带有主页按钮 (btnHome) 的 VB .NET WinForm。

如何处理 FontAwesome IconButton 中的 MouseHoverMouseLeave 事件?

我尝试了以下方法,但没有成功:

    Private Sub btnHome_MouseHover(sender As Object, e As EventArgs) Handles btnHome.MouseHover
        Me.btnHome.BackColor = Color.Black
    End Sub

    Private Sub btnHome_MouseLeave(sender As Object, e As EventArgs) Handles btnHome.MouseLeave
        Me.btnHome.BackColor = Color.Transparent
    End Sub

在变为黑色之前,按钮上会出现向浅色的过渡。

另一方面,前面的代码适用于工具箱中的常见 Windows 窗体按钮。

我也尝试了其他两个事件但没有成功:

  • 输入
  • 移动

我做错了什么?

提前致谢

【问题讨论】:

  • 您是在设计时还是运行时创建 btnHome?
  • HoverColorNormalColor 在 Button 的构造函数中定义。之后,您可以设置ActiveColor(悬停)和InActiveColor(正常)。这些颜色用于绘制图标背景。
  • 我使用常规按钮将浅色变为黑色。如果我使用 Enter 事件,它就会消失。

标签: c# vb.net winforms button mouseevent


【解决方案1】:

这在 C# 中适用于我。请注意,透明不被官方支持作为按钮的背景颜色。但是其他颜色也可以(我用的是绿色)。您还应该在 InitializeComponent() 行之后的构造函数中将 BackColor 设置为与 MouseLeave 事件中的相同。

private void btnHome_MouseEnter(object sender, EventArgs e)
{
    btnHome.BackColor = Color.Black;
}

private void btnHome_MouseLeave(object sender, EventArgs e)
{
    btnHome.BackColor = Color.Green;
}

【讨论】:

    【解决方案2】:

    Kim 的回答“不正式支持透明作为按钮的背景颜色”帮助我解决了这个问题:How to make button background transparent?

    从那里,我设法解决了它:

            With btnHome.FlatAppearance
                .MouseOverBackColor = Color.FromArgb(125, RGBColors.color1)
                .MouseDownBackColor = Color.Transparent
            End With
    

    FlatAppearance 是我一直在寻找的属性。

    谢谢大家。

    【讨论】:

      猜你喜欢
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多