2012-08-17 5 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

+3

'나는 윈도우즈 C# 포럼'을 위해 일하고있다. "창문 양식"을 의미합니까? –

+0

예하는 plataform (창문 양식 또는 웹)을 개발하고 있다고 말하면서 포럼을 언급하기 때문에 웹상에있는 것으로 의심됩니다. –

답변

0

나만의 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를 설정!

+0

감사합니다. Pilgerstorfer Franz, 단 하나의 버튼으로 작동하지만 8 개의 다른 버튼이 있습니다. 각 버튼은 다른 노래와 관련이 있습니다. 다음 버튼을 클릭하면 첫 번째 버튼 (또는 어느 버튼)이 번쩍이는 광선 효과가 정상적으로 되돌아 가기를 원합니다. –

+0

주어진 세부 정보로 내 대답을 다시 작성했습니다. –

관련 문제