List<Button> buttons { get; set; }
Queue<string> myQueue { get; set; }
public void AssignButton_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
OutputMessage.Text = "Clicked button: " + btn.Text;
btn.BackColor = System.Drawing.Color.Red;
btn.Text = myQueue.Dequeue();
}
//initialize buttons
foreach (Button b in Buttons_)
{
if (b.Text.Equals("wait"))
{
if (myQueue.Count != 0)
{
b.Text = myQueue.Dequeue();
}
else
{
break;
}
}
}
myQueue = new Queue<string>();
myQueue.Enqueue("1");
myQueue.Enqueue("2");
...
myQueue.Enqueue("13");
Buttons_ = new List<Button>();
Buttons_.Add(Button1);
...
Buttons_.Add(Button9);
我有按钮,每次点击后都会更新。他们将填充一个数字。可以把它想象成一个儿童计数游戏,队列从1开始,然后变为100.我可以正确初始化按钮并可以访问数据,但对象不是更新,有什么想法吗?
答案 0 :(得分:0)
由于您使用的是asp.net,因此队列的状态不会保存在响应中。换句话说,正在为每个按下按钮创建一个新队列,因此当您Dequeue
时,它会返回"1"
,因为这是队列中的第一个字符串。如果您只需要更新号码,可以这样做:
int value;
if(int.TryParse(btn.Text, out value))
{
btn.Text = (value + 1).ToString();
}
这假设您的按钮以整数值作为文本
开头答案 1 :(得分:0)
myQueue是您的类成员,每次执行按钮单击回发时都会创建新的页面实例。因此,如果您想保留此队列,可以根据需要使用任何这些变量以多种方式执行此操作。