none
MANTENIMIENTO DE SISTEMA RRS feed

  • Pregunta

  • Una consulta como podria usar timeouts por inactividad, de forma que si un usuario no muestra actividad durante X tiempo, se cierren las ventanas(winform) que estaban habilitadas y pida un nuevo logueo.
    viernes, 18 de mayo de 2012 7:14

Respuestas

  • La respuesta a cómo crear una clase que derive de System.Windows.Form la dio Leandro:

    public class FormBase : Form

    La respuesta a cómo crear el Handler está en las líneas  41 a 68 del código de Leandro.

    Lo que tienes que hacer es cambiar la definición de tus 26 forms. Donde dice:

    public class myForm : Form 

    lo vas a cambiar por:

    public class myForm : FormBase

    Saludos,

    Y.


    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    lunes, 28 de mayo de 2012 12:50

Todas las respuestas

  • Tu pregunta es demasiado ambigua para darte una respuesta concisa. Si se trata de una única aplicación Windows Form en la cual el usuario hace login, podrías crear una clase que derive de Syste,Windows.Forms.Form y que implemente un handler para varios eventos (activate, click, deactivate, etc). Necesitarás una variable global para guardar el instante en que ocurrió el último uso y cada vez que se ejecute el handler actualizas esa variable. En el handler del evento Elapsed del Timer calculas la diferencia entre la hora actual y el último uso y si sobrepasa el valor del timeout cierras las ventanas y haces logout. Esto tendrás que hacerlo usando métodos de comunicación inter-hilos porque el handler del timer ejecuta en un hilo distinto al de la interfaz de usuario.

    Saludos,

    Y.


    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    • Propuesto como respuesta Yván Ecarri viernes, 18 de mayo de 2012 10:13
    viernes, 18 de mayo de 2012 8:54
  • hola

    podrias aplciar algo como esto

    [WinForms] FormBase – Control de tiempo de actividad

    como veras el formbase se adjunta a los evrntos de los controles que quieras monitorear para ver si se hace algo

    en el articulo se deshabilitan los controles, pero podrias cambiar esto a un cierre de la aplicaicon usando

    Application.Exit()o

    Application.Restart()

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 18 de mayo de 2012 11:45
  • Sr. Yvan Ecarri, es una aplicación windows form.  Y como crearia un handler para que controle todos los formularios que tengo, hasta el momento poseo 26 windows form con todo y el form principal.

    ===

    Sr. Leandro Tuttini podría yo aplicar mi código así

    private void HandlerActitivy(Control.ControlCollection col)

    {this.KeyPress += Revisar;

    foreach (Control c in this.Controls) c.Click += Revisar;

    Application.Exit();

    }

    private void Revisar(object sender,EventArgs a)

    {actividad=true;//ya declarada

    timer1.stop();timer1.Interval=2000;timer1.Star();

    }



    • Editado Lito Vargas viernes, 18 de mayo de 2012 17:57
    viernes, 18 de mayo de 2012 17:41
  • La respuesta a cómo crear una clase que derive de System.Windows.Form la dio Leandro:

    public class FormBase : Form

    La respuesta a cómo crear el Handler está en las líneas  41 a 68 del código de Leandro.

    Lo que tienes que hacer es cambiar la definición de tus 26 forms. Donde dice:

    public class myForm : Form 

    lo vas a cambiar por:

    public class myForm : FormBase

    Saludos,

    Y.


    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    lunes, 28 de mayo de 2012 12:50