2017-08-08 14 views
0

私は下のコードでボタンを作成しました。ボタンの左下隅にラベルが作成されています。コードはうまく動作しますが、ユーザーがラベルをクリックしたときにボタンに応答はありません。 。ボタンのラベル

カスタムボタン:

public class CustomButton : System.Windows.Forms.Button 
{ 
    private System.Windows.Forms.Label lb = new System.Windows.Forms.Label(); 
    public CustomButton(){ 
     this.Width = 120; 
     this.Height = 65; 
     this.Font = new System.Drawing.Font(this.Font.FontFamily, 24); 
     lb = new System.Windows.Forms.Label(); 
     lb.Font = new System.Drawing.Font(lb.Font.FontFamily, 9); 
     lb.Location = new System.Drawing.Point(4,35); 
     lb.TextAlign = System.Drawing.ContentAlignment.BottomLeft; 
     lb.BackColor = System.Drawing.Color.Transparent; 
     lb.Width = 70; 
     this.Controls.Add(lb); 
    } 

    public System.Windows.Forms.Label getLb() 
    { 
     return lb; 
    } 

    public System.Windows.Forms.Button get_btn() 
    { 
     return this; 
    } 
} 

のWinForm:

public CustomButton[,] bt = new CustomButton[13,32]; 

public FormClient() 
{ 
    bt[0, 0] = new CustomButton(); 
    bt[0, 0].Click += new EventHandler(button_Click); 
} 

public void button_Click(object sender, EventArgs e) 
{ 
    //my code// 
} 
+1

ボタンイベントハンドラをラベルに割り当てることはできませんか? – EpicKip

+1

ボタンクリックイベントを発生させるCustomButtonのlabelクリックでeventHandlerを追加するだけです – VDN

+0

'lb.Width = 70; lb.Click + = this.Click; this.Controls.Add(lb); ' – TaW

答えて

0

ラベルがクリックされたときはいつでも、ボタンのonClickイベントを呼び出すことができます。したがって、私はそのようなあなたのカスタムボタンを変更したい:

public class CustomButton : System.Windows.Forms.Button 
{ 
    private System.Windows.Forms.Label lb = new System.Windows.Forms.Label(); 

    public CustomButton() 
    { 
     this.Width = 120; 
     this.Height = 65; 
     this.Font = new System.Drawing.Font (this.Font.FontFamily, 24); 
     lb = new System.Windows.Forms.Label(); 
     lb.Font = new System.Drawing.Font (lb.Font.FontFamily, 9); 
     lb.Location = new System.Drawing.Point (4, 35); 
     lb.TextAlign = System.Drawing.ContentAlignment.BottomLeft; 
     lb.BackColor = System.Drawing.Color.Transparent; 
     lb.Width = 70; 
     lb.Click += (sender, args) => InvokeOnClick (this, args); //Add this line 
     this.Controls.Add (lb); 
    } 

    public System.Windows.Forms.Label getLb() 
    { 
     return lb; 
    } 

    public System.Windows.Forms.Button get_btn() 
    { 
     return this; 
    } 
} 

今すぐ毎回ラベルをクリックすると、ボタンのクリックイベントは、同様にトリガーされます。しかし、ラベルの上にマウスを置いたときに素敵なアニメーションが表示されないため、この効果をもたらすカスタムラベルを作成する必要があります。

+0

これは解決されています..thanks :) –

関連する問題