2012-02-16 185 views
0

我已经做了一些研究,但似乎无法找到我所期待的。自定义按钮

我想要做的是使一个窗口形式的“自定义”按钮。这基本上只是将默认的“灰色”背景改为自定义图像的问题。当鼠标悬停并点击按钮时,也会使用自定义图片。

这不仅仅是一个更改背景图片,因为我想使用已经具有透明背景圆滑的边缘,我想自定义图像徘徊在图像的事/点击。我希望关于按钮的所有其他内容与普通按钮的行为方式相同。

这可能吗?

+1

听起来更像你想使用WPF。但是,您是否可以选择迁移到WPF,还是陷入Windows窗体? – 2012-02-16 23:43:38

+0

我几乎只限于Windows窗体。 – Jpin 2012-02-16 23:47:07

+0

从这里到那里的最快路线很可能是授权你需要的控制,而不是从头开始写。 – Bevan 2012-02-17 00:21:15

回答

3

我找到的解决方案是按钮的的FlatStyle设置为和设置所有的边界为0.然后我有一个按钮的焦点问题(它显示了一个小边框)。为了解决这个我跟着这个教程:

http://dotnetstep.blogspot.com/2009/06/remove-focus-rectangle-from-button.html

有了这个地方我所要做的就是事件添加到该按钮,这样,当某个动作是在它执行的图像被改变:

private void button1_MouseLeave(object sender, EventArgs e) 
    { 
     this.button1.Image = Properties.Resources._default; 
    } 

    private void button1_MouseEnter(object sender, EventArgs e) 
    { 
     this.button1.Image = Properties.Resources._hover; 
    }   

    private void button1_MouseDown(object sender, MouseEventArgs e) 
    { 
     this.button1.Image = Properties.Resources._clicked; 
    } 

    private void button1_MouseUp(object sender, MouseEventArgs e) 
    { 
     this.button1.Image = Properties.Resources._default; 
    } 

希望这会帮助别人!