• Domingo 22 de Diciembre de 2024, 21:54

Autor Tema:  Re: Efecto óptico Con El Tabulador  (Leído 2187 veces)

joanca

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: Efecto óptico Con El Tabulador
« en: Viernes 8 de Septiembre de 2006, 09:27 »
0
Hola a todos/as.

Cuando creo un Formulario MDI con VS2005 y C# y lo lanzo desde el Form principal, en el momento que pulso por primera vez el Tabulador para moverme entre controles, se produce el efecto óptico de refresco del Formulario, y solamente como digo se produce en la primera pulsación del Tab y siempre en Formularios MDI, ya que en Formularios modales no sucede.

Si alguien tiene alguna idea se lo agradezco.

Saludos.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Efecto óptico Con El Tabulador
« Respuesta #1 en: Viernes 8 de Septiembre de 2006, 15:14 »
0
:rolleyes:
Verifica con las opcciones de display de la forma por ejemplo:

Forma.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true);

tambien puedes probas con lo de las propiedasdes de doble buffer.


Finalmente se pede deber a algun rpoceso del JIT, para descartar eso ingresa por consola de visual studio hasta la carpeta de tu ejecutable y hasle:

ngen /install ejecutable.exe

y luego vuelve a porbar ejecutando el programa a ver como te va.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

joanca

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: Efecto óptico Con El Tabulador
« Respuesta #2 en: Viernes 15 de Septiembre de 2006, 09:27 »
0
Hola Juank buenos días.

He probado el "SetStyle" con varias opciones y sigue el mismo efecto óptico, así como también pasando la compilación con el "ngen". Y respecto al doble buffer pués la verdad es que no se por donde tirar. Si me lo puedes aclarar un poco más te lo agradezco.

Saludos y gracias por atenderme.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Efecto óptico Con El Tabulador
« Respuesta #3 en: Viernes 15 de Septiembre de 2006, 16:02 »
0
enviame el codigo del proyceto donde eso te sucede para probarlo yo mismo... tengo algunas sospechas...
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

joanca

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: Efecto óptico Con El Tabulador
« Respuesta #4 en: Lunes 18 de Septiembre de 2006, 12:00 »
0
Hola Juank buenos días.

Te adjunto el fichero "Preferencias.cs" que es ejemplo de un Formulario sencillo donde opero con variables del Settings y no con B.D., pero para el caso es lo mismo.

Al final de dicho fuente, te he adjuntado el designer "Preferencias.Designer.cs".

Gracias.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Efecto óptico Con El Tabulador
« Respuesta #5 en: Lunes 18 de Septiembre de 2006, 15:15 »
0
:lol:
Lo que me has pasado no me sirve para lo que deseo hacer porque requiero hacer una prueba en ejecucion :P y para eso requeriria algo mas 'runnable'
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

joanca

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: Efecto óptico Con El Tabulador
« Respuesta #6 en: Martes 19 de Septiembre de 2006, 10:02 »
0
Hola Juank buenos días.

He descubierto una pista interesante respecto al efecto óptico, el cual a diferencia de lo que te comenté el primer día, no se produce en el Form que se abre, sino en el principal MDI, y dicha pista es de la inicialización de una imagen de fondo :

this.BackgroundImage = new Bitmap(new Bitmap(Resources.ImagenFondo), this.Size.Width, this.Size.Height);

Y respecto a la manera de indicar la imagen de fondo te expongo a continuación todas las pruebas que he realizado para llegar a la conclusión de que éste sistema es el más adecuado según mi parecer :

(1) Debido a que la Propiedad "BackgroundImage" del Formulario no admite Bitmaps que puedan cambiar de tamaño de manera dinámica, estableceremos dicha imágen manualmente con el Evento "Paint", y cada vez que se modifique el tamaño del  formulario dinámicament se lanzará el Evento "Resize". Pero ésta manera de trabajar no permite definir Formularios "MDI -> IsMdiContainer = true".

(2) También tenemos la posibilidad de crear una "PictureBox" en el Form "MDI" con la imagen deseada, haciendo que ocupe toda la superficie del formulario usando la Propiedad "Dock", y además indicándole en la Propiedad "SizeMode" el valor "StretchImage" para que la imagen se ajuste al tamaño del "PictureBox".
Pero éste método hace que cuando se abre un Formulario hijo, éste se vea debajo del "PictureBox". Teóricamente se dispone del Evento "BringToFront" para lanzarlo
desde el Formulario pero no funciona bien.

(3) Otra opción que es la que yo tengo, es lanzar en el "Form_Load" la inclusión de una imágen en la Propiedad "BackgroundImage" del Form, indicándole el tamaño actual de trabajo, pero teniendo en cuenta que si redimensionamos dinámicamente el Form, no cambiará la imagen, a menos que dejemos el Form principal sin poder modificar su tamaño "MaximizeBox = false", o bien no haría falta esto último si indicamos la Propiedad "BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;".

Saludos.