Etiqueta: truco

  • Asignar el foco a un control al cargar una página web aspx

    Pues eso… que con la cabeza que tengo (se me olvidan las cosas o lo mismo mi disco duro ya está lleno, a saber) me he decidido a publicar este "truco" para ASP.NET usando páginas web ASPX, ya que hoy lo he necesitado y no me acordaba cómo había que hacerlo… o casi… ahora te explico el casi.

     

    Asignar el foco a un control de una página web ASPX al cargarla

    La idea es que hay que "darle el foco" al control en cuestión y aquí no vale eso de asignar un valor cero (0) a la propiedad TabIndex del control, que es lo que haríamos en una aplicación de escritorio (y casi me atrevería a decir que a una de XAML).

    Otra cosa que se te puede ocurrir es asignar el foco al cargar "el formulario" (en este caso la página web), y por ahí iríamos bien… pero en el caso de las páginas web ASPX el evento Load (en realidad Page_Load) no se produce o al menos no podemos interceptarlo salvo que indiquemos en la directiva @Page que queremos hacerlo, esto lo conseguimos asignando un valor "true" a la propiedad AutoEventWireup (el valor predeterminado o por defecto, es "false").

     

    Y uniendo todo lo dicho tendríamos algo así:

    <%@ Page Language="vb" AutoEventWireup="true" Strict="true" %>
    
    <!DOCTYPE html>
    <script runat="server">
    
        ' Para que se ponga el foco en el control indicado
        ' en @Page hay que indicar AutoEventWireup="true"
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
            If IsPostBack = False Then
                txtTotal.Focus()
            End If
        End Sub
        
    </script>
    
    

     

    Espero que te pueda ser útil

    Nos vemos.

    Guillermo

    P.S.

    Nota del 28/Oct/2012:

    Mira esta actualización que seguro que te interesa también:

    Asignar el foco a un control al cargar una página web aspx (ampliación y recapitulación)

  • [Como.NET] Saber el elemento de un Listview al hacer doble click

    Pues eso… en un programa que estoy haciendo necesitaba lanzar (producir) un evento si el usuario hacía doble clic (doble pulsación con el ratón/mouse) en un elemento de un Listview y busqué en mi sitio cómo hacerlo, pero… ¡no lo encontré! así que… aquí te pongo el código de cómo hacerlo por si alguna vez te surge esta misma tarea.

    Como viene siendo costumbre, el código te lo muestro tanto para Visual Basic como para C# y en cuanto a las versiones, creo que este código sirve para cualquier versión (tanto de VB como de C#) siempre que sea para punto net (.NET Framework).

     

    Comentarte que:

    DatoSeleccionado es un evento que yo he definido en el formulario y que lo intercepta otra parte de mi código.

    lvDatos es un control de tipo ListView.

     

     

    Visual Basic .NET

    Private Sub lvDatos_MouseDoubleClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles lvDatos.MouseDoubleClick
        ' Al hacer doble click en un elemento del listview
        If lvDatos.SelectedItems.Count > 0 Then
            Dim lv As ListViewItem = lvDatos.SelectedItems(0)
            RaiseEvent DatoSeleccionado(lv.Text)
        End If
    End Sub

     

     

    C#

    private void lvDatos_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e) {
        // Al hacer doble click en un elemento del listview
        if( lvDatos.SelectedItems.Count > 0 ){
            ListViewItem lv = lvDatos.SelectedItems[0];
            if( DatoSeleccionado != null ) DatoSeleccionado(lv.Text);
        }
    }

     

     

    Espero que te sea de utilidad.

     

    Nos vemos.

    Guillermo

    P.S.

    El código de C# lo he convertido a partir del código de Visual Basic usando mi utilidad gsConvertirCodigo.exe  (y no lo he comprobado, pero debería funcionar ¡seguro!).

    Tanto el código de Visual Basic como el de C# está coloreado usando mi utilidad gsColorearCodigo.exe.