Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2008/.NET Framework 3.5

Hay además otras versiones disponibles para:
ASP.NET
Cómo: Responder a los eventos de un control Button de servidor Web

Actualización: noviembre 2007

Cuando se hace clic en un control de servidor Web Button, LinkButton o ImageButton, la página actual se envía al servidor, donde se procesa.

Para responder a un evento de botón

  • Cree un controlador de eventos para uno de los siguientes eventos:

    • Evento Page_Load de página. Dado que el botón siempre expone la página en el servidor, este método se ejecutará siempre. Utilice el evento Page_Load cuando no importe en qué botón se hizo clic, sino si se envió el formulario.

    • Evento Click de botón. Escriba un controlador para este evento cuando sea importante saber en qué botón se hizo clic.

      h84w616y.alert_note(es-es,VS.90).gifNota:

      Si está trabajando con un control ImageButton y desea conocer las coordenadas x e y del clic del usuario, deberá crear primero un controlador para este evento. Para obtener información detallada, vea Cómo: Determinar las coordenadas de un control ImageButton de servidor Web.

    En el ejemplo siguiente se muestra cómo se puede responder cuando un usuario hace clic en un control Button de servidor Web. El método muestra un mensaje en un control Label de servidor Web.

    Visual Basic
    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

    C#
    public void Button1_Click (object sender, System.EventArgs e)
    {
       Label1.Text="You clicked a button.";
    }

    En el ejemplo siguiente se muestra cómo se puede responder a un clic del botón en un controlador de eventos Page_Load. El método comprueba la propiedad IsPostBack de la página para determinar si es la primera vez que se ha procesado la página o si se ha enviado mediante un clic de botón.

    Visual Basic
    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

    C#
    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.";
       }
    }

    El ejemplo siguiente muestra una sencilla calculadora de enteros con cuatro funciones. Al enlazar todos los botones (Add, Subtract, Multiply y Divide) al mismo método, es posible controlar todos los cálculos desde un solo punto y evitar repeticiones de código. El enlace de los botones con el método Calculate se realiza mediante el método AddHandler en Visual Basic y mediante el operador +=, en C#. Para asegurarse de que los valores de entrada sean enteros, podría agregar código de control de errores al método Calculate o utilizar los controles de validación que se encuentran disponibles para los formularios Web Forms.

    Visual Basic
    ' 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

    C#
    // 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();
    }
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2012 Microsoft. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker