C#更改按钮的图像只需粘贴';在旧图像的上面是新图像

C#更改按钮的图像只需粘贴';在旧图像的上面是新图像,c#,winforms,image,visual-studio-2010,C#,Winforms,Image,Visual Studio 2010,我正在尝试在不同的情况下更改按钮的图像。 它唯一要做的就是将新的(较小的)图像添加到旧的(较宽的)图像上。如何确保旧图像将被清除。我找不到button.image.clear之类的东西 if (Global.van_zoek) { btnterug.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.ZoekBedrijf2)); } else if

我正在尝试在不同的情况下更改按钮的图像。 它唯一要做的就是将新的(较小的)图像添加到旧的(较宽的)图像上。如何确保旧图像将被清除。我找不到button.image.clear之类的东西

if (Global.van_zoek)
        {
            btnterug.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.ZoekBedrijf2));
        }
        else if (!diftext)
        {
            btnterug.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.AlleBedrijven2));
        }
        else if (_Prparent != null)
        {
            btnterug.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.InfoContact2));
        }
        else
        {
            btnterug.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.InfoProject2));
        }    

在将源文件更改为新图像之前,您可以将源文件设置为null。

尝试使用invalidate方法:

button2.Invalidate();

您是否感到困惑?

对不起,也许我应该提到它是winforms应用程序。按钮没有属性源。或者我必须手动添加源?按钮面只有在可以处理绘制事件时才会清除,可能是有什么东西阻止了这一点。可能您必须设置图像大小调整模式以填充按钮以清除它。将BackgroundImageLayout更改为
None
,然后查看发生了什么。目前它处于默认的
平铺
模式。它是标准按钮还是自定义控件?不清楚为什么它不起作用,但我只是放弃了所有东西,并根据下面的建议再次尝试,它每个都起作用。我想这会起作用,但结果是一样的,请参阅链接了解更多信息result@Daanvl我在一个示例应用程序上进行了测试。工作完美。在我的例子中,即使是简单的
按钮1.BackgroundImage=Properties.Resources.archive\u图标工作正常。我想OP有定制的写控件,我会完全删除这个按钮,然后从你的建议开始。我根本不能责备你的错误。我用两个按钮创建了一个表单。第二个按钮更改第一个循环上的图片。一幅画是大的,另一幅画是小的。但情况发生了明显的变化。你在什么时候换照片?您的问题可能是因为程序临时挂起?
//Change old image to null
btnterug.BackgroundImage = null;
//Load New Image
btnterug.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.InfoProject2));