これが私が書いたもので、あなたが必要としているものと非常によく似ています。
using System;
using System.Drawing;
using System.Windows.Forms;
public partial class ImageButton : PictureBox
{
private Image _upImage, _downImage, _hoverImage;
[System.ComponentModel.Browsable(true),
System.ComponentModel.Category("Images")]
public Image UpImage
{
get { return _upImage; }
set
{
if (value != null)
{
_upImage = value;
this.Image = _upImage;
}
}
}
[System.ComponentModel.Browsable(true),
System.ComponentModel.Category("Images")]
public Image DownImage
{
get { return _downImage; }
set
{
if (value != null)
{
_downImage = value;
}
}
}
[System.ComponentModel.Browsable(true),
System.ComponentModel.Category("Images")]
public Image HoverImage
{
get { return _hoverImage; }
set
{
if (value != null)
{
_hoverImage = value;
}
}
}
public ImageButton()
{
InitializeComponent();
}
protected override void OnMouseDown(MouseEventArgs e)
{
if (DownImage != null)
this.Image = DownImage;
base.OnMouseDown(e);
}
protected override void OnMouseUp(MouseEventArgs e)
{
if (UpImage != null)
this.Image = UpImage;
base.OnMouseUp(e);
}
protected override void OnMouseEnter(EventArgs e)
{
if (HoverImage != null)
this.Image = HoverImage;
base.OnMouseEnter(e);
}
protected override void OnMouseLeave(EventArgs e)
{
if (UpImage != null)
this.Image = UpImage;
base.OnMouseLeave(e);
}
}
私がやったことは、標準PictureBox
から継承されて作成されImageButton
ます。Image
マウスアクションなしで表示する(UpImage)、Image
MouseDownイベントがトリガーされたときに表示する(DownImage)、およびImage
マウスがコントロールにカーソルを合わせたときに表示する(HoverImage)の3つのプロパティがあります。
MouseUpイベントとMouseLeaveイベントのチェックを追加する必要があることに注意してください。画像をクリックしてマウスをコントロールから離すと、マウスを下に置いたままコントロール(MouseLeave)を離れたため、コントロールはUpImageからDownImage、UpImageに戻ります。マウスがコントロールを離れたときにDownImageが表示されたままになるようにしたい場合があります。さらに、MouseUpイベントが発生した場合は、マウスがまだコントロール上にあるかどうかを確認する必要があります。そうである場合は、UpImageではなくHoverImageを表示することをお勧めします。
また、どのマウスボタンが使用されているかを確認することもできます。右や中央ではなく、左ボタンをクリックするだけで画像を変更したい場合があります。
しかし、これで始められるはずです。