CLRでのListBoxのオーナードローのやり方。
Visual C++のCLRでフォームアプリケーションを作っていて、ListBoxのオーナードローの方法がわからないので質問させてもらいました。
CLRでプログラミングしたことが無く書籍などを読んだこともなく見よう見まねで作っています。
やりたいことはとりあえず
http://dobon.net/vb/dotnet/control/lbownerdraw.html
にあることです。
サンプルプログラムはVBとC#でC++がありません。
MSDN(http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.drawitem.aspx)も同様でVBとC#のサンプルプログラムでC++がありませんでした。
とりあえず。
C#のサンプル-----------------------------------------------
//DrawItemイベントハンドラ
//項目を描画する
private void ListBox1_DrawItem(object sender,
System.Windows.Forms.DrawItemEventArgs e)
{
//背景を描画する
//項目が選択されている時は強調表示される
e.DrawBackground();
//文字を描画する色の選択
Brush b = null;
if ((e.State & DrawItemState.Selected) !=
DrawItemState.Selected)
{
//選択されていない時
switch (e.Index % 3)
{
case 0:
b = new SolidBrush(Color.Red);
break;
case 1:
b = new SolidBrush(Color.Blue);
break;
case 2:
b = new SolidBrush(Color.Green);
break;
}
}
else
{
//選択されている時はそのままの前景色を使う
b = new SolidBrush(e.ForeColor);
}
//描画する文字列の取得
string txt = ((ListBox) sender).Items[e.Index].ToString();
//文字列の描画
e.Graphics.DrawString(txt, e.Font, b, e.Bounds);
//後始末
b.Dispose();
//フォーカスを示す四角形を描画
e.DrawFocusRectangle();
}
-----------------------------------------------
を参考にしてForm1に
private: System::Void ListBox1_DrawItem(System::Object^ sender, System::Windows::Forms::DrawItemEventArgs^ e)
{
//背景を描画する
//項目が選択されている時は強調表示される
e->DrawBackground();
//文字を描画する色の選択
}
と書いてみたのですが、そのあとどうすればよいかわかりません。
わかる方、回答お願いします。