相关疑难解决方法(0)

C#:在ProgressBar上覆盖OnPaint不起作用?

我认为应该很容易创建一个ProgressBar吸取一些文本的东西.但是,我不太清楚这里发生了什么......

我添加了以下两个覆盖:

    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);
    }
Run Code Online (Sandbox Code Playgroud)

但是,我没有文本,甚至似乎都没有调用这些方法.这里发生了什么?


更新:由于到目前为止的两个答案,我已经得到它实际调用OnPaint使用SetStyle(ControlStyles.UserPaint, true),我已经得到它通过发送new Rectangle(0, 0, Width, Height)而不是在正确的地方绘制文本Bounds.

我现在确实得到了文字,但是ProgressBar它已经消失了...而且重点是将文本置于文本之上ProgressBar.知道如何解决这个问题吗?

c# controls overriding onpaint winforms

6
推荐指数
3
解决办法
1万
查看次数

标签 统计

c# ×1

controls ×1

onpaint ×1

overriding ×1

winforms ×1