私が必要としているものを正確に実行する記事を見つけました。テキスト ボックスの同じ行に複数の色を描画します。しかし問題は、それが VB.NET で書かれていて、私は自分のプログラムを C# で書いていることです。可能であれば、これをC#に変換できますか?そうでない場合は、他のオプションを教えてください。ありがとう。
これは記事です: http://www.vbrad.com/article.aspx?id=34。
ここにあなたが投稿したものの変換があります ニコラス
変更する必要がある場合、または他の何かを機能させる必要がある場合は、自分でテストする必要があります..
ハッピーコーディング
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);
}
http://converter.telerik.com/を確認してください 。コードを VB.NET から C# に、C# から VB.NET に変換します。複雑なコードでは機能しませんが、役に立つかもしれません。