- PR -

ASP.NETのイベントが複数回発生してしまいます

1
投稿者投稿内容
masaki
常連さん
会議室デビュー日: 2001/12/10
投稿数: 26
投稿日時: 2002-04-10 21:05
 はじめまして。
数日前からASP.NETの勉強を始めました(Win2000Server&IIS5)。
従来のWebアプリケーションモデル(DNAやJ2EE)と異なり、イベントドリブン指向が強いのが
面白いと思いましたが、以下のような簡単なサンプルを作成したところ、どうも1回の
ボタン押下で2回連続してイベントが発生してしまいます。

================================================================
<%@ Page Language="C#" Src="Sample.aspx.cs" Inherits="SampleWeb.Sample" %>
<html>
 <head><title></title></head>
 <body>
  <form id="Form1" method="post" runat="server">
   <asp:Button Id="Button1" OnClick="Button1_Click" Text=" 実 行 " Runat="server" />
   <br><br>
   <asp:Label Id="Label1" Text="" Runat="server" />
   <br><br>
   <asp:Label Id="Label2" Text="" Runat="server" />
  </form>
 </body>
</html>
================================================================
using System;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SampleWeb
{
  public class Sample : Page
  {
    protected Button Button1;
    protected Label Label1;
    protected Label Label2;

    private int _cnt;

    override protected void OnInit( EventArgs e ) {
      InitializeComponent();
      base.OnInit( e );
    }

    private void InitializeComponent() {
      Button1.Click += new EventHandler( Button1_Click );
    }

    protected void Button1_Click( object sender, EventArgs e ) {
      _cnt++;
      Label1.Text += "Button1_Clickが呼ばれました。<br>\\\\n";
      Label2.Text = _cnt.ToString() + "回目";
    }
  }
}
================================================================
ボタンを1回クリックすると「Button1_Clickが呼ばれました。」が一気に2行追加され、
かつLabel2は常に「2回目」が表示されてしまいます。
イベントが複数回発生してしまうのは仕様なのでしょうか?それとも何か設定が抜けている
のでしょうか?
NothingBut.NETFX
大ベテラン
会議室デビュー日: 2001/09/13
投稿数: 102
投稿日時: 2002-04-10 22:16
コード:
<asp:Button Id="Button1" OnClick="Button1_Click" Text=" 実 行 "


ここで1回、

コード:
Button1.Click += new EventHandler( Button1_Click );


ここでもう1回、あわせて2回イベントハンドラが+=されています。どちらか片方だけにしてください。
masaki
常連さん
会議室デビュー日: 2001/12/10
投稿数: 26
投稿日時: 2002-04-10 22:43
あ、よくよく考えればそうだ・・・。
某雑誌のサンプルを見ながら作ったのに。
すみません、どうもありがとうございました。

1

スキルアップ/キャリアアップ(JOB@IT)