如何在 IconButton VB .NET WinForm 中处理 MouseHover 和 MouseLeave 事件

Posted

技术标签:

【中文标题】如何在 IconButton VB .NET WinForm 中处理 MouseHover 和 MouseLeave 事件【英文标题】:How to handle MouseHover and MouseLeave events in a IconButton VB .NET WinForm 【发布时间】: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 事件,它就会消失。 【参考方案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 是我一直在寻找的属性。

谢谢大家。

【讨论】:

以上是关于如何在 IconButton VB .NET WinForm 中处理 MouseHover 和 MouseLeave 事件的主要内容,如果未能解决你的问题,请参考以下文章

VB.Net 2010中 ./和../的含义

按下时如何更改 IconButton 的图标

如何将文本对齐到 IconButton 小部件的中心底部?

VB.net中如何嵌套EXCEL?

vb6中的RtlMoveMemory ByVal a,在vb.net中应如何表达?

为啥 Flutter IconButton 动画显示在行下