0

私が必要としているものを正確に実行する記事を見つけました。テキスト ボックスの同じ行に複数の色を描画します。しかし問題は、それが VB.NET で書かれていて、私は自分のプログラムを C# で書いていることです。可能であれば、これをC#に変換できますか?そうでない場合は、他のオプションを教えてください。ありがとう。

これは記事です: http://www.vbrad.com/article.aspx?id=34

4

3 に答える 3

2

ここにあなたが投稿したものの変換があります ニコラス

変更する必要がある場合、または他の何かを機能させる必要がある場合は、自分でテストする必要があります..

ハッピーコーディング

private void  MeasureItemHandler(object sender, MeasureItemEventArgs e)
{
    Graphics g = Graphics.FromHwnd(lstColor.Handle);
    StringFormat sf = new StringFormat(StringFormat.GenericTypographic);
    SizeF size = default(SizeF);
    float height = 0;
    Font oFont = new Font("Arial", 10);

    //measure the height of what you are about to draw
    //and let the listbox know this
    size = g.MeasureString(data(e.Index), oFont, 500, sf);
    height = size.Height + 5;
    e.ItemHeight = height;
}

private void  DrawItemHandler(object sender, DrawItemEventArgs e)
{

    Graphics g = Graphics.FromHwnd(lstColor.Handle);
    StringFormat sf = new StringFormat(StringFormat.GenericTypographic);
    SizeF size = default(SizeF);
    float width = 0;
    Font oFont = new Font("Arial", 10);


    //get the width of the string you are about to write
    //this info is needed so that we can offset the next 
    //string that will be drawn in a different color.
    size = g.MeasureString(data(e.Index), oFont, 500, sf);
    width = size.Width + 16;

    //prepare the list for drawing
    e.DrawBackground();
    e.DrawFocusRectangle();

    //draw the first string in a certain color
    e.Graphics.DrawString(data(e.Index), oFont, new SolidBrush(color(e.Index)), e.Bounds.X, e.Bounds.Y);

    //draw the second string in a different color
    e.Graphics.DrawString(data(data.Length - 1 - e.Index), oFont, new SolidBrush(color(color.Length - 1 - e.Index)), width, e.Bounds.Y);
}
于 2012-08-06T15:48:02.780 に答える
0

http://converter.telerik.com/を確認してください 。コードを VB.NET から C# に、C# から VB.NET に変換します。複雑なコードでは機能しませんが、役に立つかもしれません。

于 2012-08-06T18:21:13.370 に答える