Forma opacidad windows xp .net 2

¿Alguien sabe por qué esta función no funciona en Windows XP? funciona bien bajo win7

public Form1()
{
    InitializeComponent();
    double flt = double.Parse("0,55");
    ShowOpacity(flt);
}


private void ShowOpacity(double flt)
{
    this.Opacity = flt;
}

preguntado el 08 de enero de 11 a las 16:01

¿Puede darnos más detalles sobre su entorno? ¿Está ejecutando Windows XP en una máquina virtual? ¿Cuál? ¿Qué tipo de tarjeta gráfica / controlador tiene la computadora? Este código definitivamente me ha funcionado en el pasado en Windows XP. -

Estoy ejecutando este código en una máquina virtual. gracias. -

Es probable que ese sea tu problema entonces. No tengo una máquina virtual a la mano para probar en este momento, por lo que no puedo asegurarlo. Algunos de ellos pueden tener controladores de video lo suficientemente buenos para admitir esto, pero está lejos de estar garantizado; por ejemplo, se sabe que las ventanas en capas no funcionan con Terminal Server. Espere que funcione correctamente en un cliente real de Windows XP. -

¿Por qué está analizando una cadena en lugar de simplemente usar el valor numérico? Una razón por la que esto podría fallar es si su VM no tiene su configuración regional establecida en una donde se usa una coma como punto decimal. -

si solo escribo this.Opacity = .55; funciona bien. pero si analizo el valor que proviene del archivo de configuración (un archivo de texto), no funciona -

2 Respuestas

si solo escribo this.Opacity = .55; funciona bien.

Su máquina virtual se está ejecutando con la configuración regional del sistema incorrecta, no en los Países Bajos. Que es de donde creo que eres. Desafortunadamente, "0,55" es un valor válido para una cadena en lugares como EE. UU., La coma se trata como un separador de miles. El resultado de la instrucción Parse es 55, un valor que la propiedad Opacity trunca silenciosamente a 1 sin generar una excepción.

Panel de control + Opciones regionales y de idioma, cambie su máquina a su país de origen. Verifique la configuración "Símbolo decimal" en la pestaña Formatos, luego Avanzado para verificar que sea una coma y no un punto. También verifique el tipo de Configuración, quiere un doble, no una cadena.

Respondido el 08 de enero de 11 a las 23:01

Desde MSDN: Forma.Opacidad:

Windows 2000, Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, Windows XP Home Edition, Windows XP Professional x64 Edition, plataforma Windows Server 2003 Nota: Admite la API de Windows Layered. Esta propiedad no tiene ningún efecto en las plataformas que no pueden mostrar ventanas en capas. Además, algunos controladores de pantalla no admiten la creación de capas.

Por lo tanto, el problema puede estar relacionado con el controlador de pantalla.

Respondido el 08 de enero de 11 a las 20:01

La parte importante de eso tiene que ver con los controladores de pantalla. Si está ejecutando esto en una máquina virtual XP, esa podría ser la razón por la que no ve la transparencia. De lo contrario, está diciendo que las ventanas en capas (que esta propiedad usa debajo de las cubiertas) Médica compatible con Windows XP. - Cody Grey ♦

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.