C#を攻略しよう

c#

オーナードロー2

オーナードローとは、自分でコントロールを描画する機能のことです。オーナードローを利用して、リストボックスの2行目のフォントを変更するサンプルプログラムを紹介します。

文字色変更  /  フォント変更  /  文字背景色

文字列の一部の文字色変更  /  文字の大きさ

フォント


[TOP]


1.「ファイル」→「新しいプロジェクト」→「WINDOWSアプリケーション」を選択。

2.ツールボックスから「ListBox」を配置する。

3.「DrawMode」プロバティの値を、「OwnerDrawFixed」に変更する。

4.「Form」のイベントから「Load」を選択して、次のコード(黒文字部分)を入力する。

private void Form1_Load(object sender, EventArgs e)
}

    listBox1.Items.Add("りんご");
    listBox1.Items.Add("バナナ");
    listBox1.Items.Add("メロン");
}

メソッドの上にマウスポインタをもってくると、ポップアップヒントが表示されます。またF1キーを押すと、ヘルプが立ち上がります。

5.「listBox1」のイベントから「DrawItem」を探してダブルクリックし、次のコード(黒文字部分)を入力する。

private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
}

    //適切な色で背景を描画する。
    e.DrawBackground();
    string txt = ((ListBox)sender).Items[e.Index].ToString();
    Rectangle rec = e.Bounds;
    Graphics g = e.Graphics;
    Font cfont = e.Font;
    //2行目の文字列のフォントを「MS P明朝、下線付き、太字」に変更する
    if (e.Index == 1)
    {
        cfont = new Font("MS P明朝",e.Font.Size, FontStyle.Underline | FontStyle.Bold);
    }
    //文字列を描画する
    TextRenderer.DrawText(g, txt, cfont, rec, Color.Black,TextFormatFlags.Default);
    //フォーカスを示す四角形を描画
    e.DrawFocusRectangle();
}

6.「デバッグ」→「デバッグ開始」または、F5キーを押すと、デバッグとともにプログラムが実行されます。

 

 

※当サイトは、リンクフリーです。