2012-08-17 85 views
0

我想知道是否有人可以幫我在按鈕效果上我正在爲Windows C#論壇工作。如何使用mouseClick事件重寫mouseLeave事件

所以我有兩個相似的圖像,一個背景發光,另一個沒有,創建一個按鈕。 我使用mouseEnter(glow)mouseLeave(normal)給一個效果很好的按鈕。

我有8個不同的按鈕在同一個窗體上,爲此有不同的圖像。

我希望mouseEnter事件繼續後,我鼠標點擊即發光效果的按鈕,但我無法得到一個正確的解決方案。 當點擊不同的(下一個)按鈕時,發光的按鈕應該恢復正常。

想知道是否有人能夠指引我走向正確的方向,做了一些網上搜索還沒有能夠拿出解決方案。

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; 
} 
+0

到目前爲止,你有什麼代碼可以顯示你有什麼,以便我們可以根據現有的代碼獲得更直觀的想法..? – MethodMan 2012-08-17 13:58:13

+3

'我正在爲Windows C#論壇'工作。你的意思是「windows窗體」嗎? – 2012-08-17 13:59:28

+0

Yeha告訴我們你正在開發什麼平臺(Windows窗體或網頁),我懷疑你是因爲你提到論壇而在網上。 – 2012-08-17 14:05:26

回答

0

你試過用你自己的buttonClass。我做了一個快速演示GlowingButton。在點擊時播放給定的歌曲,在鼠標進入時發光,並在請假或點擊時重置背景。

// 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); 
     } 
    } 
} 

在你的表格你需要做的就是設定一個songUrl每個glowingButton(通過設計師或源內)!

+0

謝謝Pilgerstorfer Franz,它只有一個按鈕,但我的表單上有8個不同的按鈕。每個按鈕都與不同的歌曲有關。當我點擊下一個按鈕時,我希望第一個按鈕(或哪個按鈕)發光效果恢復正常。 – 2012-08-18 02:28:34

+0

重寫了我給出的答案 - 請看一看 – 2012-08-18 12:11:01