次の方法で共有


方法 : Button Web サーバー コントロール イベントに応答する

更新 : 2007 年 11 月

Button Web サーバー コントロール、LinkButton Web サーバー コントロール、または ImageButton Web サーバー コントロールをクリックすると、現在のページがサーバーに送信され、サーバーで処理されます。

ボタン イベントに応答するには

  • 次のいずれかのイベントのイベント ハンドラを作成します。

    • ページの Page_Load イベント。ボタンは常にページをサーバーにポストするため、このメソッドは常に実行されます。フォームが送信されることだけが重要で、クリックされたボタンを特定する必要がない場合は、Page_Load イベントを使用します。

    • ボタンの Click イベント。クリックされたボタンを特定する必要がある場合は、このイベントのイベント ハンドラを作成します。

      h84w616y.alert_note(ja-jp,VS.90).gifメモ :

      ImageButton コントロールを使用し、ユーザーがクリックした位置の x 座標と y 座標を調べる場合は、このイベントのイベント ハンドラを作成します。詳細については、「方法 : ImageButton Web サーバー コントロールで座標を決定する」を参照してください。

    ユーザーが Button Web サーバー コントロールをクリックしたときの応答の例は、次のとおりです。このメソッドは Label Web サーバー コントロールにメッセージを表示します。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Label1.Text="You clicked a button"
    End Sub
    
    public void Button1_Click (object sender, System.EventArgs e)
    {
       Label1.Text="You clicked a button.";
    }
    

    Page_Load イベント ハンドラでクリックされたボタンに対する応答の例は、次のとおりです。このメソッドは、ページの IsPostBack プロパティを調べることにより、ページが初めて処理されたのかどうか、またはボタンのクリックによって送信されたのかどうかを判定します。

    Private Sub Page_Load(ByVal Sender As System.Object, ByVal e _
        As System.EventArgs) Handles MyBase.Load
        If Not IsPostback Then
            ' This is called the first time the page has loaded.
            ' The user will not have been able to click any buttons yet.
        Else
            ' This is called if the form has been posted back, possibly
            ' by a button click.
            Me.Label1.Text = "You clicked a button."
        End If
    End Sub
    
    private void Page_Load(object sender, System.EventArgs e)
    {
       if (!IsPostBack)
       {
          // Evals true first time browser hits the page.
       }
       else
       {
          // This is called if the form has been posted back, possibly
          // by a button click.
          this.Label1.Text = "You clicked a button.";
       }
    }
    

    単純な整数の四則演算を行うコードの例を次に示します。すべてのボタン ([Add][Subtract][Multiply]、および [Divide]) を同じメソッドにバインドすると、四則演算のすべてを同じ場所で処理できるため、コードを繰り返し記述する必要がありません。Calculate メソッドへのボタンを連結するには、Visual Basic の AddHandler メソッドと C# の += 演算子を使用します。入力値が確実に整数になるように指定するには、エラー処理コードを Calculate メソッドに追加したり、Web フォームに使用できる検証コントロールを使用したりする方法があります。

    ' Set the CommandName property of the buttons to "Add", 
    ' "Subtract", "Multiply", and "Divide".
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       AddHandler Me.btnAdd.Click, AddressOf Calculate
       AddHandler Me.btnSubtract.Click, AddressOf Calculate
       AddHandler Me.btnMultiply.Click, AddressOf Calculate
       AddHandler Me.btnDivide.Click, AddressOf Calculate
    End Sub
    
    Public Sub Calculate(ByVal sender As Object, ByVal e As System.EventArgs)
       Dim op1 As Integer = CType(Me.TextBox1.Text, Integer)
       Dim op2 As Integer = CType(Me.TextBox2.Text, Integer)
       Dim result As Integer
       Select Case CType(sender, Button).CommandName
          Case "Add"
             result = op1 + op2
          Case "Subtract"
             result = op1 - op2
          Case "Multiply"
             result = op1 * op2
          Case "Divide"
             ' Divide two numbers and return an integer result.
             If op2 > 0 Then
                   result = op1 \ op2
             Else
                   result = 0
             End If
          Case Else
             ' Error handling code here.
       End Select
       Label1.Text = result.ToString()     
    End Sub
    
    // Set the CommandName property of the buttons to "Add", _
    // "Subtract", "Multiply", and "Divide".
    protected void Page_Load(object sender, EventArgs e)
    {
       btnAdd.Click += new System.EventHandler(this.Calculate);
       btnSubtract.Click += new System.EventHandler(this.Calculate);
       btnMultiply.Click += new System.EventHandler(this.Calculate);
       btnDivide.Click += new System.EventHandler(this.Calculate);
    }
    
    protected void Calculate (object sender, System.EventArgs e)
    {
       int op1 = Convert.ToInt16(TextBox1.Text);
       int op2 = Convert.ToInt16(TextBox2.Text);
       int result = 0;
       switch(((Button)sender).CommandName)
       {
          case "Add" :
             result = op1 + op2;
             break;
          case "Subtract" :
             result = op1 - op2;
             break;
          case "Multiply" :
             result = op1 * op2;
             break;
          case "Divide" :
             // Integer division.
             if (op2 > 0) 
                   result = op1 / op2;
             else
                   result = 0;
             break;
          default:
             // Error handling code here.
             break;
       }
       Label1.Text = result.ToString();
    }
    

参照

参照

Button Web サーバー コントロールの概要