1

2 つのテキスト ボックスと 1 つのボタンしかない単純なフォームがあるとします。テキスト ボックスはAutoPostBackfalse に設定されています。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 内の場所によって決まりますか?

4

1 に答える 1

2

Microsoft によれば、イベントの特定の順序に依存するべきではありません。ただし、一般に、イベントはページ マークアップ内のコントロールの位置の順序で発生します。

したがって、レイアウトが

[TextBox1]

[TextBox2]

[Button1]

イベントは次の順序で発生します。

Page_Load

TextBox1_Changed

TextBox2_Changed

Button1_Click

ページ上のコントロールを並べ替えて、イベントの順序を変更してみてください。

于 2013-06-04T00:33:38.673 に答える