using System; using System.Drawing; using System.Windows.Forms; namespace IStation.WinFrmUI { /// /// 图片按钮 /// public partial class ImageButton : PictureBox { #region constructor public ImageButton() { InitializeComponent(); _toolTip = new ToolTip(components); SizeMode = PictureBoxSizeMode.AutoSize; MouseEnter += ImageButton_MouseEnter; MouseLeave += ImageButton_MouseLeave; MouseDown += ImageButton_MouseDown; MouseUp += ImageButton_MouseUp; } #endregion #region property public new Image Image { get { return base.Image; } set { base.Image = value; _imageNormal = value; } } private Image _imageNormal; public Image ImageNormal { get { return _imageNormal; } set { _imageNormal = value; base.Image = value; } } private Image _imageOver; public Image ImageOver { get { return _imageOver; } set { _imageOver = value; } } private Image _imageDown; public Image ImageDown { get { return _imageDown; } set { _imageDown = value; } } public string ToolTip { get { return _toolTip == null ? "" : _toolTip.GetToolTip(this); } set { if (_toolTip != null) _toolTip.SetToolTip(this, value); } } #endregion #region field private readonly ToolTip _toolTip; /// /// 鼠标已经leave标识 /// private bool _mouseLeft; #endregion protected void ImageButton_MouseEnter(object sender, EventArgs e) { _mouseLeft = false; if (_imageOver != null) base.Image = _imageOver; } protected void ImageButton_MouseLeave(object sender, EventArgs e) { _mouseLeft = true; if (_imageNormal != null) base.Image = _imageNormal; } protected void ImageButton_MouseDown(object sender, MouseEventArgs e) { if (_imageDown != null) base.Image = _imageDown; } protected void ImageButton_MouseUp(object sender, MouseEventArgs e) { if (!_mouseLeft && _imageOver != null) base.Image = _imageOver; } protected override void OnPaint(PaintEventArgs pe) { base.OnPaint(pe); } } }