none
c#,リストボックスとオーナードロー RRS feed

  • 質問

  • いつもお世話になっております。

    リストボックスで、

    「あいうえお」という行を追加して、「あいう」を黒字で、「えお」を黒字と背景色をグレー(反転表示)で表示したいのですが、

     

    行の一部の文字列だけを反転表示させる方法が見つからなかったので、

    オーナードローから描画してみたのですが、

    文字のサイズがあわないせいか、「あいう」と「えお」の間に隙間が出来てしまいます。

     

            private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
            {

            e.DrawBackground();
            Brush c = new SolidBrush(Color.Black),
            c2 = new SolidBrush(Color.Silver );

     

            Graphics g = e.Graphics;
            Rectangle rec = e.Bounds;


            Size size = g.MeasureString("あいう", e.Font).ToSize();//「あいう」のサイズ

            e.Graphics.DrawString("あいう",e.Font, c, rec);//「あいう」の描画


             rec.Location = new Point(rec.X + size.Width, rec.Y);

            size = g.MeasureString("えお", e.Font).ToSize();//「えお」のサイズ

          rec.Width = size.Width;

             e.Graphics.FillRectangle(c2, rec);//文字の背景色をシルバーで塗る

            e.Graphics.DrawString("えお",e.Font, c, rec);//「えお」の描画

     

    文字列のサイズの計り方に問題があるのでしょうか?

    あるいは他に間違いがあるのでしょうが?

    どなたかよろしくお願い致します。

     

    2007年9月5日 20:18

回答