今天写程序遇到一个问题,我简化如下:
protected void Page_Load(object sender, EventArgs e)
    {
        l();
    }
    public void l()
    { Label1.Text = Label2.Text; }
    protected void Button1_Click(object sender, EventArgs e)
    {
        int i = Convert.ToInt32(Label2.Text);
        i++;
        Label2.Text = i.ToString();    }
label的text属性设置为1;这样运行后2个label的值为1,1 单击button后为1,2  再单击为2,3  如此类推
代码改为如下:protected void Page_Load(object sender, EventArgs e)
    {
        l();
    }
    public void l()
    { Label1.Text = Label2.Text; }
    protected void Button1_Click(object sender, EventArgs e)
    {
        int i = Convert.ToInt32(Label2.Text);
        i++;
        Label2.Text = i.ToString();
        l();
    }
就是在button的单击事件里加个l()函数,这样运行后2个label的值为1,1 单击button后为2,2  再单击为3,3  如此类推,这样
2个值就同步了,请问为什么会这样,当我单击button时有没有重新load页面,请把这个程序的运行顺序详细说明下,谢谢。

解决方案 »

  1.   

    是label2的text属性设为1,label1默认
      

  2.   

    简单说就是第一种情况是先执行的l()方法,在执行的 Button1_Click所以Label2.text会比label1.text大1
    这是由于页生命周期顺序是先执行Page_load再执行方法 Button1_Click
    第二种情况其实和一一样 不过你最后又执行了一次l(),所以就同步咯
      

  3.   

    我在想是不是我单击button时,先执行button事件,再重新load页面。但为什么还要load页面呢?
      

  4.   

    也就是说,但我单击button时,是先执行Page_load,再执行button_click?