//najpierw generuje buttony i textboxy jeśli dodałeś je przez designer to musisz sam im przypisać Tag
for(int i = 0;i<3;i++)
{
Button btn = new Button();
btn.Clicked += ButtonClickedEventHander();
TextBox tb = new Textbox();
panel.Add(tb);
panel.Add(btn);
btn.Tag = Tuple.Create(tb,i);
}
//tak to robiesz jeśli masz już textboxy i buttony gotowe
button1.Tag = Tuple.Create(textBox1, 1);
button2.Tag = Tuple.Create(textBox2, 2);
button3.Tag = Tuple.Create(textBox3, 3);
//no i oczywiście każdy z buttonów otrzymuje ten sam event
//jeśli buttony nazywają się w sposób button1, button2.. to w zasadzie można by nawet kombinować z wyciąganiem cyferki z nazwy buttona
void ButtonClickedEventHandler(object sender, EventArgs args)
{
var btn = sender as Button;
var tuple = btn.Tag as Tuple<TextBox,int>;
tuple.Item1.Text = tuple.Item2.ToString();
}
Pisane na kolanie, ale powinno działać.