1

作成したカスタム画像の「スタート」ボタンがあります。私はC#.netのこの部分をいじったことはありませんが、VB.NETについては少し知っています。

私は人々が何かのようなものを持っているのを見てきましpublic void picturebox_MouseDown()たが、どれもうまくいかないようです。マウスイベントが発生したときに画像を変更しようとしています。

MouseDown 画像をStartButtonDownに変更します

MouseUp 画像をStartButtonUpに変更します

MouseEnter画像をStartButtonHoverに変更します

MouseLeave画像をStartButtonUpに変更します

私がしなければならない特定の何かがありますか、私はこれを約1時間グーグルで検索しましたが、それでも私を助けるものは何も見つかりませんでした。

4

1 に答える 1

0

これが私が書いたもので、あなたが必要としているものと非常によく似ています。

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)、ImageMouseDownイベントがトリガーされたときに表示する(DownImage)、およびImageマウスがコントロールにカーソルを合わせたときに表示する(HoverImage)の3つのプロパティがあります。

MouseUpイベントとMouseLeaveイベントのチェックを追加する必要があることに注意してください。画像をクリックしてマウスをコントロールから離すと、マウスを下に置いたままコントロール(MouseLeave)を離れたため、コントロールはUpImageからDownImage、UpImageに戻ります。マウスがコントロールを離れたときにDownImageが表示されたままになるようにしたい場合があります。さらに、MouseUpイベントが発生した場合は、マウスがまだコントロール上にあるかどうかを確認する必要があります。そうである場合は、UpImageではなくHoverImageを表示することをお勧めします。

また、どのマウスボタンが使用されているかを確認することもできます。右や中央ではなく、左ボタンをクリックするだけで画像を変更したい場合があります。

しかし、これで始められるはずです。

于 2012-08-08T12:19:49.253 に答える