У меня есть ситуация, когда у меня есть someFunction(int)
, и мне нужно программно генерировать n
кнопки, которые будут вызывать его.Это означает, что я хочу создать кнопки B1
, B2
, ... Bn
, которые при нажатии вызывают someFunction(1)
, someFunction(2)
, ... someFunction(n)
.
ThisВот как я пытался сделать это (полупсевдокод):
for (int i = 1; i <= n; i++) {
Button b = new Button();
b.Caption = "Value " + n; // non-WPF: b.Text = "Value " + n;
b.Click += (sender, event) => {
someFunction(i);
}
}
Меня беспокоит то, что, когда я нажимаю на первую кнопку (B1) с отладчиком над someFunction(i)
,мне это звонит someFunction(n + 1)
.
Я не уверен, почему это так или как это исправить.Обходной путь, который я использую, должен использовать вместо someFunction(i)
, someFunction(int.Parse(i.ToString())
(для создания копии i
).Но это кажется мне сомнительным, потому что целые числа должны быть типами значений.