|
■No22686 (AriAri さん) に返信
> C#2003ではNGなのでしょうか
あぁっと。そういえば 2003 でしたっけか。であればこうかな。
手元に VS2003 が無いので、メモ帳 + 手動コンパイルですが、一応動いているようで。
// ファイル
// C:\sample.cs
//
// コンパイル
// C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe /t:winexe /out:C:\sample.exe C:\sample.cs
//
using System;
using System.Drawing;
using System.Windows.Forms;
class Form1: Form {
public static void Main() { Application.Run(new Form1()); }
private ListBox listBox1 = new ListBox();
private ListBox listBox2 = new ListBox();
ListItemRenderer r;
private Form1() {
listBox1.Items.AddRange(new object[] { "あ", "い", "う", "え" });
Controls.Add(listBox1);
listBox2.Top = listBox1.Bottom;
listBox2.Items.AddRange(new object[] { "か", "き", "く", "け" });
Controls.Add(listBox2);
r = new ListItemRenderer(listBox1);
}
private class ListItemRenderer {
ListBox listBox;
public ListItemRenderer(ListBox listBox) {
this.listBox = listBox;
this.listBox.DrawMode = DrawMode.OwnerDrawFixed;
this.listBox.DrawItem += new DrawItemEventHandler(Foo);
}
private void Foo(object s, DrawItemEventArgs e) {
// この中は任意実装で。
if (e.Index < 0) return;
e.DrawBackground();
e.Graphics.DrawString(listBox.GetItemText(listBox.Items[e.Index]),
this.listBox.Font, Brushes.Red, e.Bounds, StringFormat.GenericDefault);
if (((int)e.State & (int)DrawItemState.Selected) != 0) e.DrawFocusRectangle();
}
}
}
|