代码之家  ›  专栏  ›  技术社区  ›  Amir

在OnPaint事件中对按钮进行更改

  •  1
  • Amir  · 技术社区  · 16 年前

    我写了一个扩展按钮的组件。

    我定制我的 OnPaint() 事件。我动态地做了一些更改,并希望用这些新的细节刷新组件。

    这是怎么做到的?

    2 回复  |  直到 16 年前
        1
  •  3
  •   Matthew Ferreira    16 年前

    是否要重新绘制组件?呼叫 Refresh 或 Invalidate .

        2
  •  1
  •   Hans Passant    16 年前

    无需任何特殊要求,只要按钮收到第一次绘制通知,就会使用自定义代码。可能的错误是base.onpaint()调用的位置。这不起作用,例如:

    protected override void OnPaint(PaintEventArgs e) {
        // Wrong order:
        e.Graphics.DrawRectangle(Pens.Black, new Rectangle(3, 3, Width - 7, Height - 7));
        base.OnPaint(e);
    }
    

    方法的作用是:绘制按钮的默认外观,清除自定义项。您必须调用base.onpaint()。 之前 画你的东西:

    protected override void OnPaint(PaintEventArgs e) {
        base.OnPaint(e);
        e.Graphics.DrawRectangle(Pens.Black, new Rectangle(3, 3, Width - 7, Height - 7));
    }