2016-11-04 8 views
0
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にする子どものカウントゲームと考えてください。ボタンを正しく初期化してデータにアクセスできますが、オブジェクトは更新されていません。ASP.NETボタンを押してもオブジェクトは更新されません。

答えて

0

MYQUEUEがあなたのクラスのメンバーであり、毎回あなたはボタンのクリックを行いますポストバックが発生し、ページの新しいインスタンスが作成されます。したがって、このキューを保持したい場合は、要件に応じてこれらの変数を使用して複数の方法でこれを行うことができます。

  1. ViewStateの
  2. セッション
  3. クッキー
+0

ありがとう!私が必要としたのは、次に行くべき場所を知るアイディアでした。 – Rob

0

asp.netを使用しているため、キューの状態はレスポンス間で保存されません。言い換えると、各ボタンのプレスごとに新しいキューが作成されているので、Dequeueの場合は、キュー内の最初の文字列であるため、"1"を返します。あなただけの数を更新する必要がある場合は、あなたがこれを行うことができます:これはあなたのボタンはテキストとして整数値から始まると仮定している

int value; 
if(int.TryParse(btn.Text, out value)) 
{ 
    btn.Text = (value + 1).ToString(); 
} 

関連する問題