这让我疯了。我正在尝试标记轨迹栏控件的刻度。因此,我希望控件使用其基础绘制实现,因此我可以添加绘制代码以在每个轨迹栏下方绘制标签。我发现了一个基本相同的例子。 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