2016-08-25 3 views
1

色名またはカラーコードの文字列があります。したがって、ストリングは、例えば、 Blueまたはff106603。私がしようとしているのは、適切な色を手前の色としてTelerik RadGridViewに設定することです。私はColor.FromName(string name)メソッドを使用しようとしましたが、これは色の名前でうまくいきます。しかし、(論理的に)カラーコードでは機能しません。いくつかの研究の後、UInt32.TryParse()を使って文字列を解析しようとしました。私は今、次のコードを持っています:色名またはカラーコードでグリッドビューの前面色を設定する#

private void gvCustComments_CellFormatting(object sender, CellFormattingEventArgs e) 
{ 
    if (e.Row.Cells["Color"].Value != null) 
    { 
     UInt32 res; 
     string color = e.Row.Cells["Color"].Value.ToString().Substring(2); 

     if (UInt32.TryParse(color, out res)) 
      e.CellElement.ForeColor = Color.FromArgb((int)res); 

     else 
      e.CellElement.ForeColor = Color.FromName(e.Row.Cells["Color"].Value.ToString()); 
    } 
} 

私はグリッドビューで3つの行を持っています。最初はカラーコードff106603、2番目はRed、3番目はBlackです。赤と黒は正常に動作しています。しかし、私はまだ色のコードにいくつかの問題があります。私がそれをデバッグするとき、前の色の値は0, 1, 160, 107です。これは正しい値ですが、グリッドビューではテキストが表示されません。前の色は濃い緑の代わりに透明に設定されているようです。

私はC#、Telerik、WinForms、および.NET Framework 4.5.2を使用しています。何か案は?

+0

中かっこなしのif文を使用するのは単純ではありません! – colosso

+0

味の問題:p – Roman

答えて

2

ColorConverterクラスを使用できます。

ColorConverter colorConverter = new ColorConverter(); 
var colorFromHexCode = (Color)colorConverter.ConvertFromString("#ff106603"); 
var colorFromName = (Color)colorConverter.ConvertFromString("Blue"); 
Console.WriteLine(colorFromHexCode.ToString()); 
Console.WriteLine(colorFromName.ToString()); 

出力は次のとおりです:それは「#」で始まる場合を除き

Color [A=255, R=16, G=102, B=3] 
Color [Blue] 

それは進値を変換しません使用方法は、このようなものになるだろう。

0

色を変換するには、未確認()を使用できます。

<asp:Label ID="here" runat="server" Text="Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh"> 

int trouut = unchecked((int)0Xff106603); 
here.BackColor = Color.FromArgb(trouut); 

私はそれに役立つことを願っています。

について、
ピエール。

0

色名別の行を使用できます。使用法は次のようなものになります。

for (int i = 0; (i <= (DGview.Rows.Count - 1)); i++) 
{ 
    DGview.Rows(i).Cells[0].Style.ForeColor = Color.Red; 
} 
関連する問題