c# - winform 在悬停时更改按钮的 BackgroundImage 属性

标签 c# winforms button background-image

我想在悬停时更改按钮的 backgroundImage 属性,如下所示:

    private void btnGetHardwareID_MouseEnter(object sender, EventArgs e)
    {
        btnGetHardwareID.BackgroundImage = (System.Drawing.Image)(Properties.Resources._11949847771696668271pill_button_green_benji__01_svg_med);
        btnGetHardwareID.Refresh();
    }

    private void btnGetHardwareID_MouseLeave(object sender, EventArgs e)
    {
        btnGetHardwareID.BackgroundImage = (System.Drawing.Image)(Properties.Resources._11949847771793996117pill_button_purple_benji_01_svg_med);
        btnGetHardwareID.Refresh();
    }

btnGetHardwareID 的属性如下:

    // btnGetHardwareID
    // 
    this.btnGetHardwareID.BackColor = System.Drawing.Color.Transparent;
    this.btnGetHardwareID.BackgroundImage = global::Travian.Properties.Resources._11949847771793996117pill_button_purple_benji_01_svg_med;
    this.btnGetHardwareID.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
    this.btnGetHardwareID.FlatAppearance.BorderSize = 0;
    this.btnGetHardwareID.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
    this.btnGetHardwareID.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    this.btnGetHardwareID.ForeColor = System.Drawing.Color.White;
    this.btnGetHardwareID.Location = new System.Drawing.Point(31, 53);
    this.btnGetHardwareID.Name = "btnGetHardwareID";
    this.btnGetHardwareID.Size = new System.Drawing.Size(160, 40);
    this.btnGetHardwareID.TabIndex = 25;
    this.btnGetHardwareID.Text = "Get My Hardware-ID";
    this.btnGetHardwareID.UseVisualStyleBackColor = false;
    this.btnGetHardwareID.Click += new System.EventHandler(this.btnGetHardwareID_Click);
    this.btnGetHardwareID.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btnGetHardwareID_MouseDown);
    this.btnGetHardwareID.MouseEnter += new System.EventHandler(this.btnGetHardwareID_MouseEnter);
    this.btnGetHardwareID.MouseLeave += new System.EventHandler(this.btnGetHardwareID_MouseLeave);
    this.btnGetHardwareID.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btnGetHardwareID_MouseUp);

现在的问题是 MouseEnter 上的 backgroundImage 是这样的:
Mouse Enter

在 MouseLeave 上是这样的:

Mouse Leave

绿色按钮周围的 Grayed BackColor 是什么,我该如何删除它?

编辑
原图如下:

red button - original - png format

green button - original - png format

MainForm 的背景:

main form - background-image

提前致谢

最佳答案

您正在寻找的解决方案如下。将 FlatAppearance.MouseOverBackColor 设置为透明。

this.btnGetHardwareID.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;

关于c# - winform 在悬停时更改按钮的 BackgroundImage 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15907868/

相关文章:

c# - 如果属性仅在它们被反射到时才被构造,为什么属性构造函数如此有限?

swift - radiusCorner 和按钮

c# - 连接对象数组中的唯一字符串

c# - 为什么 Debug 构建中的 C# JIT 汇编代码中的每个方法中都有 cmp + je

c# - 将转换器绑定(bind)为内部类?

c# - 捕获用户控件中的所有鼠标点击和按键操作

windows - 聚焦表单上的点击丢失

c# - Windows 窗体、方法和按钮

Android:粗体按钮文本

html - 如何在不发生换行的情况下将按钮放入文本中?