2017-07-16 17 views
2

次のコードでは、ボタンの上にカーソルを置くことができますが、繰り返しコードが必要です。私は短縮し、同じコードを使用することができるが、別のボタン名を使用する方法があるのだろうかと思っていた。C#繰り返しコードを短くする良い方法

私はprivate void *NAME*が同じで、異なるボタンで使用されていることを知っていて、以下のように短縮することができますが、個々のボタンではなくすべてのボタン上にカーソルを置いておきます。

private void button1_Leave(object sender, EventArgs e) 
    { 
     this.button1.BackgroundImage = ((Image)(Properties.Resources.leave_img)); 
    } 

    private void btnfb_Leave(object sender, EventArgs e) 
    { 
     this.btnfb.BackgroundImage = ((Image)(Properties.Resources.leave_img)); 
    } 

    void btnfb_MouseMove(object sender, MouseEventArgs e) 
    { 
     this.btnfb.BackgroundImage = ((Image)(Properties.Resources.hover_img)); 
    } 

    private void btndiscord_Leave(object sender, EventArgs e) 
    { 
     this.btndiscord.BackgroundImage = ((Image)(Properties.Resources.leave_img)); 
    } 

    void btndiscord_MouseMove(object sender, MouseEventArgs e) 
    { 
     this.btndiscord.BackgroundImage = ((Image)(Properties.Resources.hover_img)); 
    } 

    private void btn_pp_Leave(object sender, EventArgs e) 
    { 
     this.btn_pp.BackgroundImage = ((Image)(Properties.Resources.leave_img)); 
    } 

    void btn_pp_MouseMove(object sender, MouseEventArgs e) 
    { 
     this.btn_pp.BackgroundImage = ((Image)(Properties.Resources.hover_img)); 
    } 

    private void btnhelp_Leave(object sender, EventArgs e) 
    { 
     this.btnhelp.BackgroundImage = ((Image)(Properties.Resources.leave_img)); 
    } 

    void btnhelp_MouseMove(object sender, MouseEventArgs e) 
    { 
     this.btnhelp.BackgroundImage = ((Image)(Properties.Resources.hover_img)); 
    } 

    private void btnsave_Leave(object sender, EventArgs e) 
    { 
     this.btnsave.BackgroundImage = ((Image)(Properties.Resources.leave_img)); 
    } 

    void btnsave_MouseMove(object sender, MouseEventArgs e) 
    { 
     this.btnsave.BackgroundImage = ((Image)(Properties.Resources.hover_img)); 
    } 

    private void btnmini_Leave(object sender, EventArgs e) 
    { 
     this.btnmini.BackgroundImage = ((Image)(Properties.Resources.leave_img)); 
    } 
+0

使用するためabother共通のハンドラを作成することができます

this.button1.Leave += MyButtonLeaveHandler; this.btnfb.Leave += MyButtonLeaveHandler; 

を言って...同じハンドラにすべてのイベントを配線することができC# 'Delegate' – AminM

答えて

6

あなたは

private void MyButtonLeaveHandler(object sender, EventArgs e) 
{ 
Button button = sender as Button; 
if (button != null) 
{ 
    button.BackgroundImage = ((Image)(Properties.Resources.leave_img)); 
} 
} 

は同様にあなたがMouseLeaveイベント

+0

しかし、ボタン1の背景だけをleav e_imgのみ?異なる時刻にbtn_ppなどにいる必要があるためです。 –

+0

あなたの例を使って、どこにコードがありますか?どのボタンが上に乗っているかを検出するにはどうすればいいですか?私は、画像を設定するために上に乗っているボタンだけを望んでいるからです。 –

+0

ありがとうございます。病気は今試してみてください。 –

関連する問題