我首先要 System.Drawing.Color 转换为16进制 #DEBA84
然后再从 #DEBA84 转换为 System.Drawing.Color 我使用下面的代码会出错,哪位好心人帮我改改,并显示正确的颜色(其中的16进制转换是不可缺少)
int aa = System.Drawing.ColorConverter.ToOle(this.textBox2.BackColor);
string Haa= Convert.ToString(aa,16); //其中aaa是十进制数。
this.textBox1.BackColor =  System.Drawing.ColorTranslator.FromHtml(Haa);

解决方案 »

  1.   

    int intColor = System.Drawing.ColorTranslator.ToOle(TextBox1.BackColor);
    string strHColor = Convert.ToString(intColor,16);
    strHColor = strHColor.PadRight(6,'0');
    strHColor = "#" + strHColor;
    TextBox2.BackColor =  System.Drawing.ColorTranslator.FromHtml(strHColor);
      

  2.   

    swordragon(古道热肠):
    你有没有试过 TextBox2 和TextBox1中显示的背景颜色不一样
      

  3.   

    一样的,我试了,请确认:
    strHColor = strHColor.PadRight(6,'0');//一样
    strHColor = strHColor.PadLeft(6,'0');//反色
      

  4.   

    //是ColorTranslator,不是ColorConverter
    int intColor = System.Drawing.ColorTranslator.ToOle(TextBox1.BackColor);
    string strHColor = Convert.ToString(intColor,16);
    //是PadRight,不是PadLeft
    strHColor = strHColor.PadRight(6,'0');
    strHColor = "#" + strHColor;
    TextBox2.BackColor =  System.Drawing.ColorTranslator.FromHtml(strHColor);请再次确认。
      

  5.   

    我是原样Copy你的代码,如下: 还是不行
    int intColor = System.Drawing.ColorTranslator.ToOle(textBox1.BackColor);
    string strHColor = Convert.ToString(intColor,16);
    //是PadRight,不是PadLeft
    strHColor = strHColor.PadRight(6,'0');
    strHColor = "#" + strHColor;
    textBox2.BackColor =  System.Drawing.ColorTranslator.FromHtml(strHColor);
      

  6.   

    你多换几种颜色试试,如果使用黑色,用上面的代码还会出错
    TextBox1 我使用 Web 格式的 OrangeRed(红色), TextBox2的 BackColor =绿色
      

  7.   

    可以了,因为使用了 strHColor = strHColor.PadRight(6,'0');
    还原时使用 System.Drawing.ColorTranslator.FromHtml(strHColor);
    会自动转换,把它当成另外一种颜色来处理,如:如:
    string strHColor = Convert.ToString(intColor,16);  strHColor  = FF
    strHColor = strHColor.PadRight(6,'0');            strHColor  = #FF0000
    还原时 ColorTranslator.FromHtml(strHColor); #FF 和 ##FF0000 值是不一样的
    所以不能填充 '0'
    后来改为://========变成16进制=================
    int intColor = System.Drawing.ColorTranslator.ToOle(this.textBox1.BackColor);
    string strHColor = Convert.ToString(intColor,16);
    //strHColor = strHColor.PadRight(6,'0');
    strHColor = "#" + strHColor;//===============还原===============
    string strHColor = this.label1.Text;
    //strHColor= strHColor.Replace("0","");  
    strHColor = strHColor.Replace("#",""); 
    int intColor1 = Convert.ToInt32(strHColor,16);
      

  8.   

    还原时少了一句:
    this.textBox2.BackColor =  ColorTranslator.FromWin32(intColor1);