一.設計時效果
二.運行時效果
三.簡單的實現思路
因爲在最近的項目中要用到類似效果的控件,所以就索性做了一個.原理很簡單,實現的代碼不超過250行.繼承control類,然後在onpaint方法中來繪製按鈕效果,指定Region,同時,要在Onmousedown,Onmouseenter,Onmouseup,Onmouseleave,OnResize,OnLostFocus等方法中做一些相應的處理.
四.部分源代碼
protected override void OnLostFocus(EventArgs e)
{
base.OnLostFocus(e);
this._isEnter = false;
this.Invalidate();
}
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
this.Capture = true;
_isEnter = true;
this._mouseStyle = MouseStyle.MouseDown;
this.Invalidate();
if (e.Button == MouseButtons.Left)
{
if (this.ButtonClick != null)
this.ButtonClick();
}
}
protected override void OnMouseHover(EventArgs e)
y=''none''; document.getElementById(''_657_787_Open_Text'').style.display=''none''; document.getElementById(''_657_787_Closed_Image'').style.display=''inline''; document.getElementById(''_657_787_Closed_Text'').style.display=''inline'';" align="top" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" /> {
base.OnMouseHover(e);
this._mouseStyle = MouseStyle.MouseHover;
this.Invalidate();
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
this._mouseStyle = MouseStyle.MouseHover;
this.Invalidate();
}
protected override void OnMouseEnter(EventArgs e)
{
base.OnMouseEnter(e);
this._mouseStyle = MouseStyle.MouseHover;
this.Invalidate();
}
protected override void OnMouseLeave(EventArgs e)
{
base.OnMouseLeave(e);
this._mouseStyle = MouseStyle.None;
this.Invalidate();
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.Height = this.Width;
}