SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: picyo en Martes 19 de Julio de 2011, 21:10

Título: comparar color de texto de usuario con un color en especial
Publicado por: picyo en Martes 19 de Julio de 2011, 21:10

hola estoy haciendo la siguiente comparación:
 
Código: C#
  1. ColorDialog DlgColor = new ColorDialog();
  2.                     DlgColor.Color = cajaRespuesta1.ForeColor;
  3.                     if (DlgColor.ShowDialog() == DialogResult.OK)                    {
  4.                         cajaRespuesta1.ForeColor = DlgColor.Color;                        
  5.                         if (cajaRespuesta1.Text == "negro" && cajaRespuesta1.ForeColor == System.Drawing.Color.FromArgb(255, 0, 0, 0))
  6.  
  7.  
El usuario cambia el color del texto de forma manual (  DlgColor.Color = cajaRespuesta1.ForeColor)
he usado la comparacion de System.Drawing.Color.FromArgb(255, 0, 0, 0) ( que es el color negro) ya que haciendo debugg, veo que la propiedad ForeColor  tiene el siguiente formato : "ctCorreccion1.ForeColor   "{Name=WindowText, ARGB=(255, 0, 0, 0)}"   
La unica forma de comparar que se me ha ocurrido ha sido esa, bueno, a parte de la de comparralo con el color negro "directamente" con System.Drawing.Color.Black. Ninguna de las dos formas me ha funcionado .
Creo que me acerco mas a la primera, ya que el debug al menos me da un formato para la creacion del color de 4 parámetros, el alpha, y los 3 colores básicos. El hecho que es que nunca me entra dentro del if, nunca el color es igual y no se como puedo hacerlo. Alguien podría decirme qué hago mal ?
gracias
Título: Re:comparar color de texto de usuario con un color en especial
Publicado por: gerloxxx en Miércoles 20 de Julio de 2011, 19:29
Realmente no se bien como se representan los colores, creo que esa es la base para esto... pero observando que cuando conviertes un color a Argb te muestra un numero, use ese numero para comparar quedando algo asi:

cajaRespuesta1.ForeColor.ToArgb() == System.Drawing.Color.FromArgb(255,0,0,0).ToArgb ()

o asi:

cajaRespuesta1.ForeColor.ToArgb().Equals(System.Drawing.Color.FromArgb(255,0,0,0).ToArgb ())

esperemos alguna explicacion de alguien más experimentado, espero te sirva lo que te comento..

saludos
Título: Re:comparar color de texto de usuario con un color en especial
Publicado por: picyo en Miércoles 20 de Julio de 2011, 21:44
Hola!!
Directamente he cojido la primera de las opciones y... ha ido genial ! Voy a ver si entiendo el procedimiento, además, pero oye, me ha funcionado chapeau! :)
Grácias!