按钮点击期间交替转动?

时间:2016-05-27 20:02:06

标签: c# asp.net button

如果我点击某个按钮,则应选择其他XO。但它只是X但不是O为什么?

我已将轮流作为布尔变量并使用反向符号来取代替代。

Button b = (Button)sender;
if (turn)
{
    b.Text = "X";
}
else
{ 
    b.Text = "O";
}
turn = !turn;

2 个答案:

答案 0 :(得分:1)

我相信你会在这些方面寻找一些东西:

protected void btnExample_Click(object sender, EventArgs e)
{
    var button = (Button)sender;
    if(Session["Turn"] == null)
         Session.Add("Turn", true);

    var turn = (bool)Session["Turn"];
    if(turn)
    {
         Session["Turn"] = false;
         button.Text = "X";
    }

    else
    {
        Session["Turn"] = true;
        button.Text = "O";
    }
}

您在会话中使用全局本质,这可能会引入问题和奇怪的测试用例。特别是因为它会持续很短的时间,但这会起作用。随着更多的要求,可能会得到更好的答案,但是你会得到代码的概念以及为什么它会在更长的时间内跟踪。

答案 1 :(得分:0)

我不清楚为什么你在这里使用变量 - 看起来你只是在两个值之间切换按钮文本......如果是这样,为什么不呢:

Button b = (Button)sender;
if (b.Text = "0")
{
    b.Text = "X";
}
else
{ 
    b.Text = "O";
}

或者如果你必须使用'turn'变量,那么你需要根据决定因素来初始化它 - 例如:

if (b.Text = "X") /*or whatever the determining factor is -- maybe you need to do a lookup here instead -- request.querysting("turn"), viewstate("turn"), etc.*/
{
    turn = 1;
}
else
{ 
    turn = 0;
}

然后你可以改变按钮文字:

Button b = (Button)sender;
if (turn)
{
    b.Text = "X";
}
else
{ 
    b.Text = "O";
}

然后在这里 - 如果你在某处存储'turn'的新值......

viewstate("turn") = !turn;

(或者无论你在哪里存放它......)