none
Ralentización del puntero del mouse cuando paso por botón. RRS feed

  • Pregunta

  • Hola, les escribo para pedirles ayuda urgente!

     

    Tengo una aplicación en C#, la cual tiene un menú vertical de botones a la izquierda.

    Los botones son un control con el siguiente código:

    public class MyColors
      {
        public static readonly Color
          ForeColor = Color.Black,
          BackColor = Color.Snow,
          GridBackColor0 = Color.FromArgb(221, 242, 253),
          GridBackColor1 = Color.FromArgb(243, 251, 254),
          ControlBackColor = Color.Snow,
          GridLineColor = Color.LightBlue,
          GridHighlightColor = Color.Blue,
          DisabledBackgroundColor = Color.FromArgb(240, 240, 240),
          DisabledForeColor = Color.LightGray,
          MouseDownBackColor = Color.DeepSkyBlue,
          MouseOverBackColor = Color.LightSkyBlue;
      }
    
      public class MyFonts
      {
        public static readonly Font NormalFont = new Font("Arial", 12, FontStyle.Regular);
      }
    
    public class MyButton : Button
      {
        public MyButton()
        {
          SetStyle();
        }
    
        public override Color ForeColor
        {
          get { return Enabled ? MyColors.ForeColor : MyColors.DisabledForeColor; }
          set { }
        }
    
        protected override void OnEnabledChanged(EventArgs e)
        {
          base.OnEnabledChanged(e);
          SetStyle();
        }
    
        protected override void OnLayout(LayoutEventArgs levent)
        {
          base.OnLayout(levent);
        }
    
        void SetStyle()
        {
          FlatAppearance.BorderColor = Enabled ? Color.SteelBlue : MyColors.DisabledForeColor;
          FlatStyle = FlatStyle.Standard;
          FlatAppearance.BorderSize = 2;
          FlatAppearance.MouseDownBackColor = MyColors.MouseDownBackColor;
          FlatAppearance.MouseOverBackColor = MyColors.MouseOverBackColor;
        }
      }
    

    Lo que sucede, es que en la ventana principal de mi aplicación, donde está ese menú de botones, cuando paso el mouse sobre los mismos, éste se ralentiza mucho y solo sucede en los botones de esa barra de menús, en otras ventanas donde están esos botones no sucede nada extraño.

     

    Que puede estar pasando? ya me fijé que no haya ninguna tooltip ya que pensé que quizás eso pudiese estar causando ese efecto.

     

    Espero me puedan ayudar! muchas gracias!

    miércoles, 6 de octubre de 2010 18:15

Todas las respuestas

  • Prueba con el siguiente codigo, para que no te de problemas.

     

    void
     SetStyle()
    {
    SuspendLayout();
    FlatAppearance.BorderColor = Enabled ? Color.SteelBlue : MyColors.DisabledForeColor;
    FlatStyle = FlatStyle.Standard;
    FlatAppearance.BorderSize = 2;
    FlatAppearance.MouseDownBackColor = MyColors.MouseDownBackColor;
    FlatAppearance.MouseOverBackColor = MyColors.MouseOverBackColor;
    ResumeLayout(true);
    }

    Elmer Carías
    • Propuesto como respuesta AlexLander jueves, 7 de octubre de 2010 14:27
    miércoles, 6 de octubre de 2010 19:49
  • Gracias por responder Elmer! lamentablemente no me funcionó lo que me pusiste.

     

    Sin embargo quiero agregar nueva información. Ya descubrí porqué está sucediendo, y es porque la aplicación necesita un segundo monitor en dualview para funcionar correctamente (ya que en el segundo monitor se representan unos videos) (ésta utiliza directX 9) y al habilitar el dualview, entonces ahí es cuando se ralentiza toda la pantalla principal de la aplicación (ésta en la pantalla principal muestra simplemente un panel con varios botones grandes (77x65) y en la segunda pantalla se muestra una imagen estática de un paisaje) sin embargo si deshabilito el dualview, entonces la aplicación funciona correctamente, claro, ésta necesita del dualview para funcionar por lo que no es una opción quitarlo.

    Ésto me ha pasado con una nvidia 6500 A-LE, sin embargo probé con otra tarjeta de video, una ati y funcionó bien, he probado la aplicación en win7 con una nvidia y también funcionó correctamente.

    El tema es que necesito poder correr la aplicación en el pc del cliente y los requerimientos los está cumpliendo, pero sucede esto de la ralentización.

     

    Espero me puedas ayudar, gracias!

    viernes, 8 de octubre de 2010 12:45
  • Por lo que veo, no creo encontes que tenga que ver con la aplicación, sino con la forma en el el sistema operativo administra la tarjeta de video.

    Busca en la tarjeta de video si puedes utilizar por cada dispositivo donde muestras video, si se pueden separar los procesos que utiliza el sistema operativo, o si se le puede asignar algun core por cada dispositivo de salida de video.

    Saludos,


    Elmer Carías
    viernes, 8 de octubre de 2010 16:28