如何扩展轨迹栏控件的绘制?

时间:2016-01-24 12:02:52

标签: c# .net

这让我疯了。我正在尝试标记轨迹栏控件的刻度。因此,我希望控件使用其基础绘制实现,因此我可以添加绘制代码以在每个轨迹栏下方绘制标签。我发现了一个基本相同的例子。 http://www.codeproject.com/Articles/13712/TimeSlider-A-time-based-TrackBar

我所做的是以下内容:

public class DateTimeTrackBar : TrackBar
{
   :
   public DateTimeTrackBar()
   {
      :
      SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
   }

   protected override void OnPaint(PaintEventArgs e)
   {
      base.OnPaint(e);

      base.SetStyle(ControlStyles.UserPaint, false);

      base.Refresh();                      // Use default paint implementation.

      // Adding additional paint code.
      if (ShowLabels)
         DrawLabels(e);                    // Works fine.

      base.SetStyle(ControlStyles.UserPaint, true);
    }
    :
}

当控件出现时,一切似乎都没问题,但是当我触摸轨迹栏时,控件重新绘制自己并且我的标签消失了。这怎么可能?

TIA

0 个答案:

没有答案