none
C#中TabControl的自绘制问题,很困惑的问题。 RRS feed

  • 问题

  • 我在form里面设置了一个tabcontrol,添加了两个page,同时将tabcontrol设置为Ownerdrawfixed,代码如下:

                e.Graphics.DrawImage(bk, new PointF(0, 0));
                switch (e.Index)
                {
                    case 0:
                        e.Graphics.DrawImage(tabbk, e.Bounds.Location);
                        switch (e.State)
                        {
                            case DrawItemState.Selected:
                                e.Graphics.DrawString("第一页", e.Font, Brushes.White, new PointF(2, 4));
                                break;
                            default:
                                e.Graphics.DrawString("第一页", e.Font, Brushes.Black, new PointF(2, 4));
                                break;
                        }
                        break;
                    case 1:
                        e.Graphics.DrawImage(tabbk, e.Bounds.Location);
                        e.Graphics.DrawString("第二页", e.Font, Brushes.Black, e.Bounds.Location);
                        break;
                }

    其中“bk”是tabcontrol的背景图片,“tabbk”则是页签的背景图片,这个程序有个问题,就是当系统开始绘制第二个页签的时候,又重新绘制了一次tabcontrol的背景,结果这个背景把第一个页签的背景遮挡住了,

    而且,即使在自绘制模式下,仍然带有windows缺省的立体边框,难道这个不能去掉吗?

    请专家指点迷津。

     

    这个是程序的运行效果图,大家可以看到第二页页签被黄色背景图遮挡住了:


    da jia hao!
    2010年12月18日 7:38

答案

全部回复