2015-11-04 56 views
0

我有一個帶有6個按鈕的窗體。這些按鈕用於增加/減少相應文本框的值。現在我正在嘗試「按鈕動畫」。當鼠標在他身上時,我想在按鈕上獲得另一個效果。向一組WinForms控件添加類似的行爲

My form

爲了做到這一點,我有資源的兩個diferent圖像和我做這個代碼:

private void btnHoursDown_MouseHover(object sender, EventArgs e) { 
    btnHoursDown.Image = Game_Helper.Properties.Resources.DownHover; 
} 

private void btnHoursDown_MouseLeave(object sender, EventArgs e) { 
    btnHoursDown.Image = Game_Helper.Properties.Resources.Down; 
} 

這工作得很好。我的問題是:創建一個類(ButtonBehaviour.cs)並將該代碼放入該類中並不明智?

所以我有這樣的事情:

ButtonBehaviour buttonBehaviour = new ButtonBehaviour(); 
private void btnHoursDown_MouseHover(object sender, EventArgs e) { 
    buttonBehaviour.buttonDownHover(); 
} 

private void btnHoursDown_MouseLeave(object sender, EventArgs e) { 
    buttonBehaviour.buttonDownLeave(); 
} 

和類應該是:

public class ButtonBehaviour { 
    public void buttonDownHover() { 
     // code 
    } 

    public void buttonDownLeave() { 
     // code 
    } 
} 

我怎樣才能創建這個類的行爲,使按鍵適應這種行爲?

+1

你想繼承可能 –

+0

子類'Button'? –

+1

我會加入這兩個Thomases。 – Sinatr

回答

2

是否應適用於所有的按鈕一個效果,嘗試通過sender可變

這樣相同的事件處理程序添加到他們

private void btn_MouseHover(object sender, EventArgs e) 
{ 
    (sender as Button).Image = Game_Helper.Properties.Resources.DownHover; 
} 

private void btn_MouseLeave(object sender, EventArgs e) 
{ 
    (sender as Button).Image = Game_Helper.Properties.Resources.Down; 
} 

按鈕,它引發的事件,請您避免重複代碼每個按鈕。創建一個ButtonBehaviourCustomButton可能是一個過度工程,除非你需要它們在許多形式

+0

我正在學習c#並開始與類一起工作,所以我做了這個小項目,以獲得更多的適合類的工作。您發佈的這段代碼是ButtonBehaviour類的代碼嗎? 編輯:剛剛在我的表單中測試了這段代碼,似乎有效,但這樣,我不需要類行爲吧? – Ravers

+0

@ F.Carvalho,不,它是'form'中的代碼來代替'btnHoursDown_MouseHover','btnHoursDown_MouseHover';你有'btnMinutesDown','btnSecondsDown'類似的方法嗎?其中3人可以重複使用方法'btn_MouseHover','btn_MouseLeave' – ASh

+0

是的,我願意。所以我應該使用這個代碼的3個減少按鈕(小時,分鐘,秒),我可以有類似的增加按鈕,對不對? – Ravers

相關問題