2013-01-10 129 views
2

我有一个面板控制,它有一个背景图片。我希望它改变不透明度,我将鼠标移到它上面。我怎样才能做到这一点?我尝试过:使面板控制透明

btnExit.BackColor = Color.FromArgb(20,63,63,63); 
    btnExit.BackColor = Color.FromArgb(20); 

但没有任何变化..任何想法,为什么这是行不通的?这个小组坐在另一个面板上,它也有背景图片。谢谢!

+0

如果你打算减少提供一个理由(评论)>我反击懦弱的下跌。 – FrostyFire

+0

我下降了什么? o_0 – Kristian

+0

那么,你希望整个控件是半透明的吗? –

回答

1

据我所知,可以用你的方法完成,但我想你必须刷新控件。

btnExit.Refresh(); 

编辑:

首先设置你的按钮FlatStyle to Flat

this.btnExit.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 

然后让两个函数btnExit_MouseHover和btnExit_MouseLeave:

void btnExit_MouseHover(object sender, EventArgs e) 
{ 
    btnExit.BackColor = Color.FromArgb(20, 63, 63, 63); 
    btnExit.Refresh(); 
} 

void btnExit_MouseLeave(object sender, EventArgs e) 
{ 
    btnExit.BackColor = Color.FromArgb(100, 63, 63, 63); 
    btnExit.Refresh(); 
} 

要激活这些功能添加两个事件处理:

btnExit.MouseHover += new EventHandler(btnExit_MouseHover); 
btnExit.MouseLeave += new EventHandler(btnExit_MouseLeave); 

这将这样的伎俩,现在你只需要改变背景颜色为你喜欢的颜色)。

+0

谢谢!面板控制没有平整的外观,所以我试图用普通按钮与图像和面板与图像。常规按钮只是改变了背景颜色,并且面板闪烁了一秒钟,就好像它即将起作用,但重置会恢复。我为mousehover和leave设置了不透明度为100,但同样的事情发生。有小费吗?谢谢! – Kristian

+0

我想当你停用MouseLeave事件处理程序时,它会对问题进行排序。或者在mouseHover中设置if语句/开关,并在MouseLeave中重置该var – Quispie