for (var i = 0; i < 3; i )
{
for (var j = 0; j < 3; j )
{
numbers[i, j] = new Button();
numbers[i, j].Location = new Point(row, input.Height column);
row = 40;
numbers[i, j].Size = new Size(30, 30);
numbers[i, j].Text = k.ToString();
k ;
numbers[i, j].Click = (e, sender) =>
{
input.Text = k.ToString();
};
Controls.Add(numbers[i, j]);
}
row = 0;
column = 40;
}
我在啟動程式并按下任何按鈕輸出到輸入欄位時遇到這樣的問題 9 我猜是事件中存在問題,但我不知道如何解決它,例如,當按下 2按鈕,輸入欄位輸出 2 而不是 9
uj5u.com熱心網友回復:
問題是在事件處理程式執行時,變數的值k已經是 9。
您可以將計算移至k.ToString()事件處理程式外部的區域變數(請注意,我交換了事件處理程式引數sender并e按照慣例):
var text = k.ToString();
numbers[i, j].Click = (sender, e) =>
{
input.Text = text;
};
由于您已經將文本“0”到“9”作為按鈕文本,因此也可以很簡單:
numbers[i, j].Click = (sender, e) =>
{
input.Text = ((Button)sender).Text;
};
uj5u.com熱心網友回復:
我會使用控制元件的 Tag 屬性:
numbers[i, j].Text = k.ToString();
numbers[i, j].Tag = k; // store the value you need within the button itself
k ;
numbers[i, j].Click = (sender, e) =>
{
input.Text = sender.Tag.ToString();
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/465212.html
