2017-09-22 5 views
0
private void button1_Click(object sender, EventArgs e) 
    { 
     TextBox[] allTextBoxs = { textBox2, textBox3, textBox4, textBox5 }; 

     Button buttonNum = sender as Button; 
     String Num = buttonNum.Name; 

     var getNumbers = (from t in Num 
          where char.IsDigit(t) 
          select t).ToArray(); 
     string Test = new string(getNumbers); 
     int Number = (Convert.ToInt32(Test)); 

     String theName = ("textBox" + Number.ToString()); 
     TextBox textBoxNum = allTextBoxs[Number]; 

     buttonLogic(textBoxNum); 
    } 

private void buttonLogic(TextBox textBoxNum) 
    { 
     decimal price = 0; 

     if (String.IsNullOrEmpty(textBoxNum.Text)) 
     { 
      textBoxNum.Text = "0"; 
     } 

     if (!decimal.TryParse(textBoxNum.Text, out price)) 
     { 
      textBoxNum.Text = "0"; 
     } 

     price = Convert.ToDecimal(textBoxNum.Text); 
     sum = sum + price; 
     textBox1.Text = sum.ToString(); 
     calculateTotal(); 
     calculateChange(); 
    } 

This is the complete form without the broken codeボタン

とそれらに対応するために、テキストボックス(TextBox)アレイを使用して、私は私が右を選択する方法が必要であることを左側にして行うために、すべてのボタンに同じクリックイベントを使用しようとしていますクリックされたボタンに応じたテキストボックス。このコードでは、クリックすると何もしません。

名前をテキストボックスに印刷するように指示すると、正しい名前が印刷されます。

ありがとうございます。

+0

clickイベントを購読するコードはどこですか? button1.Click + = button1_Clickのようなものが必要ですが、button2.Click、button3.Clickなどが必要です。 – Derek

+0

いずれかのボタンが押されたときにフォームエディタがこのイベントをトリガーする必要がありますか? – everythingguy

答えて

0

Button.Tagプロパティを使用すると、対応するテキストボックスにボタンを「関連付ける」ことができます。

// In Constructor 

button1.Tag = textbox1; 
button1.Click += AllButtons_Click; 

button2.Tag = textbox2; 
button2.Click += AllButtons_Click; 


// Then you can access textboxex from the event handler 
private void AllButtons_Click(object sender, EventArgs e) 
{ 
    var button = (Button)sender; 
    var textbox = (TextBox)button.Tag; 

    buttonLogic(textbox); 
}