如果我重写 OnPaint 并在控件上绘制一个正方形,当我在设计器中预览它时,如何让 e.graphics.draw... 显示出来?
2 回答
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))]类时钟控制:控制{...}
如果您尝试为控件绘制焦点矩形,并且在将控件添加到表单后对其进行操作时使其可见,那么Gaijin42 的方法应该可以工作。
如果您想查看自定义绘制控件的外观...
如果您已经重写了控件中的方法,那么在将控件添加到表单(或另一个控件)后查看控件时
OnPaint
,您应该会看到该方法的结果。OnPaint
如果您在查看
Paint
控件本身的设计器时试图查看结果,我认为这是不可能的(至少它不是 VS2005):不幸的是,这是不可能的。当您编写用户控件的行为时,不会编译代码,设计器实际上使用普通用户控件来承载子控件。覆盖等将
OnPaint
不会运行。要调试控件中的覆盖,您需要在某种主机中运行它。VS2005为此提供了一个新的控制主机,但我发现有时这还不够。