c# - 悬停并单击时更改标签的颜色

标签 c# winforms mousehover

我有一个关于更改标签外观的问题。这是屏幕截图:

enter image description here

这是鼠标悬停时的颜色,我想要这样。 我想要的是当我点击它时它保持那种颜色。但是由于我的 mouseleave 控件,它不会像我想要的那样工作。

代码如下:

   private void btnArchives_MouseEnter(object sender, EventArgs e)
    {
        lblArchives.BackColor = Color.FromArgb(9, 18, 28); //darkercolor
    }

   private void btnArchives_MouseLeave(object sender, EventArgs e)
   {
       lblArchives.BackColor = Color.FromArgb(15, 34, 53); //lightercolor
   }

我也试过鼠标悬停。它看起来和鼠标输入一样。 底线是我希望当鼠标悬停在它们上方时颜色变为较深的颜色,而当鼠标悬停在它们上方时颜色变回较浅的颜色。但是当我点击它时,我也让它保持深色。然后转回较浅的颜色,然后我单击另一个按钮,另一个按钮现在将变成较深的颜色。谢谢!

编辑:我使用标签而不是按钮。我目前正在尝试下面的一些评论,非常感谢。

最佳答案

我使用了这种技术,刚刚对其进行了测试,我认为它就是您想要的。

    Label clickedLabel;
    private void mouseEnter(object sender, EventArgs e)
    {
        Label theLabel = (Label)sender;
        if (theLabel != clickedLabel)
            theLabel.BackColor = Color.Red;
    }

    private void mouseLeave(object sender, EventArgs e)
    {
        Label theLabel = (Label)sender;
        if (theLabel != clickedLabel)
            theLabel.BackColor = Color.Yellow;
    }

    private void labelClick(object sender, EventArgs e)
    {
        setColor();//Calling this here so clickedLabel is still the old value
        Label theLabel = (Label)sender;
        clickedLabel = theLabel;
    }

    public void setColor()
    {
        if(clickedLabel != default(Label))
            clickedLabel.BackColor = Color.Yellow;
        //Resetting clicked label because another (or the same) was just clicked.
    }

解释:
这些事件仅设置为标签,因此我们可以执行 (Label)sender 这意味着激活事件的标签。我创建了一个 Label clickedLabel 变量并将其设置为被点击的标签,一旦另一个被点击,变量就会改变并且检查将起作用。

此方法的最佳之处在于,无论您拥有多少个标签,您都不会仅将它们作为 sender 的名称进行引用。

关于c# - 悬停并单击时更改标签的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42063585/

相关文章:

c# - 从 XML 填充对象

html - 将鼠标悬停在 DIV 上时显示内容

c# - C# 和 Web 服务中的部分类

c# - 允许匿名访问单个 WCF 服务方法

c# - 用 C# 编写的 WebJob 可以创建 Azure 数据库吗?

C# 在 gecko 浏览器中自动填充输入框

C# 正确的程序结构

c# - 如何在用户输入并显示错误消息时验证文本框值?

jquery - 响应式图像 map 弹出窗口

python - 如何在 pyqt 中捕获鼠标悬停在 QTableWidget 项目上的事件?