缓存事件的触发顺序

时间:2013-06-03 19:20:18

标签: c# asp.net events

假设我有一个简单的表单,只有两个文本框和一个按钮。文本框的AutoPostBack设置为false。假设将一些代码放在那些写入响应流的TextChanged事件中,说明在单击一个按钮并将表单提交给Web服务器后触发了哪个TextChanged事件。有没有办法控制缓存事件的触发顺序?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace IsPostBack___Part_8
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void TextBox1_TextChanged(object sender, EventArgs e)
        {
            Response.Write("Text box 1 event fire");
        }

        protected void TextBox2_TextChanged(object sender, EventArgs e)
        {
            Response.Write("Text box 2 event fired");
        }
        //dummy button click handler here
    }
}

使用该代码并且表单上没有任何其他内容,首先更改哪个文本框无关紧要,它们以相同的顺序触发。缓存事件的触发顺序是由它在html中的位置决定的吗?

1 个答案:

答案 0 :(得分:2)

根据Microsoft的说法,您不应该依赖特定的事件顺序。但一般情况下,事件将按照页面标记内的控件位置顺序触发。

所以如果您的布局是

[TextBox1]

[TextBox2]

[Button1]

事件将按顺序触发:

Page_Load

TextBox1_Changed

TextBox2_Changed

Button1_Click

您可以尝试通过重新排列页面上的控件来更改事件的顺序。