如何使用mouseClick事件覆盖mouseLeave事件

时间:2012-08-17 13:53:14

标签: c# .net

我想知道是否有人可以帮助我解决按钮效应我正在为Windows c#论坛工作。

所以我有两个相似的图像,一个背景发光,另一个没有,创建一个按钮。 我正在使用mouseEnter(glow)mouseLeave(normal)来生效一个正常工作的按钮。

我在同一表格上有8个不同的按钮,有不同的图像。

我希望mouseElick事件在我点击按钮,即发光效果后继续,但我无法得到正确的解决方案。 当点击不同的(下一个)按钮时,发光的按钮应该恢复正常。

想知道是否有人能够指出我朝着正确的方向发展,在网上进行一些搜索还是没有能够提出解决方案。

private void btnSong1_MouseEnter(object sender, EventArgs e)
{
    this.btnSong1.BackgroundImage = 
        ((System.Drawing.Image)(Properties.Resources.satisfactionH));
}

private void btnSong1_MouseLeave(object sender, EventArgs e)
{
    this.btnSong1.BackgroundImage = 
        ((System.Drawing.Image)(Properties.Resources.satisfaction));
}

private void btnSong1_Click(object sender, EventArgs e)
{
    nowPlaying1.Visible = Enabled;
    nowPlaying2.Visible = false;
    nowPlaying5.Visible = false;

    this.btnSong1.BackgroundImage = 
        ((System.Drawing.Image)(Properties.Resources.satisfactionH));

    axWindowsMediaPlayer1.URL = 
        @"C:\MediaFile\music\ArethaFranklin\(I Can't Get No) Satisfaction.mp3";
}

private void btnSong2_Click(object sender, EventArgs e)
{
    this.btnSong1.BackgroundImage = 
        ((System.Drawing.Image)(Properties.Resources.satisfaction));
    axWindowsMediaPlayer1.URL = @"C:\MediaFile\music\ArethaFranklin\Come To Me.mp3";
    nowPlaying1.Visible = false;
    nowPlaying2.Visible = Enabled;
    nowPlaying5.Visible = false;
} 

1 个答案:

答案 0 :(得分:1)

您是否尝试使用自己的buttonClass。我做了一个快速演示GlowingButton。单击播放给定的songUrl,鼠标输入时发光并在离开或单击时重置背景。

// don't forget: using System.Runtime.InteropServices;
class GlowingButton : System.Windows.Forms.Button
{
    [DllImport("winmm.dll")]
    private static extern long mciSendString(string strCommand,
                                             StringBuilder strReturn,
                                             int iReturnLength,
                                             IntPtr hwndCallback);

    public string SongURL { get; set; }
    public GlowingButton() : base()
    {
        this.BackgroundImage = Winforms_Demo.Properties.Resources.bg;
        this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
    }
    protected override void OnMouseEnter(EventArgs e)
    {
        base.OnMouseEnter(e);
        this.BackgroundImage = Winforms_Demo.Properties.Resources.bgGlow;
    }
    protected override void OnMouseLeave(EventArgs e)
    {
        base.OnMouseLeave(e);
        this.BackgroundImage = Winforms_Demo.Properties.Resources.bg;
    }
    protected override void OnClick(EventArgs e)
    {
        base.OnClick(e);
        this.BackgroundImage = Winforms_Demo.Properties.Resources.bg;

        if (!string.IsNullOrEmpty(SongURL))
        {
            mciSendString("open \"" + SongURL + "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
            mciSendString("play MediaFile", null, 0, IntPtr.Zero);
        }
    }
}

在您的表单中,您只需为每个glowingButton 设置一个 songUrl (通过设计师或您的来源)!