我想创建一个能够在其上绘制文字的进度条很容易。然而,我不太确定这里发生了什么......
我添加了以下两个覆盖:
我添加了以下两个覆盖:
protected override void OnPaintBackground(PaintEventArgs pevent)
{
base.OnPaintBackground(pevent);
var flags = TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter | TextFormatFlags.SingleLine | TextFormatFlags.WordEllipsis;
TextRenderer.DrawText(pevent.Graphics, "Hello", Font, Bounds, Color.Black, flags);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
var flags = TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter | TextFormatFlags.SingleLine | TextFormatFlags.WordEllipsis;
TextRenderer.DrawText(e.Graphics, "Hello", Font, Bounds, Color.Black, flags);
}
然而,我没有看到任何文本,并且该方法似乎根本没有被调用。这是怎么回事?
更新:感谢两位答案,我已经使用SetStyle(ControlStyles.UserPaint,true)
实际调用了OnPaint
,并通过发送new Rectangle(0,0,Width,Height)
而不是Bounds
将文本绘制在正确的位置。
我现在有文本了,但是ProgressBar
消失了...而且重点是要将文本放在ProgressBar
上方。有什么方法可以解决这个问题吗?