3

如果我重写 OnPaint 并在控件上绘制一个正方形,当我在设计器中预览它时,如何让 e.graphics.draw... 显示出来?

4

2 回答 2

6

http://msdn.microsoft.com/en-us/magazine/cc164048.aspx

http://msdn.microsoft.com/en-us/magazine/cc164145.aspx

虽然您可以手动注册 Control.OnPaint 以添加设计时 UI,但您会发现覆盖 OnPaintAdornments 是一个更好的选择,因为它仅在绘制控件的设计时/运行时 UI 后调用,让您将锦上添花(见图 20)。只需将 DesignerAttribute 添加到 ClockControl 类即可完成关联:复制代码

[设计师(typeof(ClockControlDesigner))]类时钟控制:控制{...}

于 2009-04-10T19:56:33.033 回答
1

如果您尝试为控件绘制焦点矩形,并且在将控件添加到表单后对其进行操作时使其可见,那么Gaijin42 的方法应该可以工作。

如果您想查看自定义绘制控件的外观...

  • 如果您已经重写了控件中的方法,那么在将控件添加到表单(或另一个控件)后查看控件时OnPaint,您应该会看到该方法的结果。OnPaint

  • 如果您在查看Paint控件本身的设计器时试图查看结果,我认为这是不可能的(至少它不是 VS2005):

    不幸的是,这是不可能的。当您编写用户控件的行为时,不会编译代码,设计器实际上使用普通用户控件来承载子控件。覆盖等将OnPaint 不会运行。

    要调试控件中的覆盖,您需要在某种主机中运行它。VS2005为此提供了一个新的控制主机,但我发现有时这还不够。

于 2009-04-10T19:57:44.247 回答