如果我重写OnPaint并在控件上绘制一个正方形,那么当我在设计器中预览时,如何让e.graphics.draw ...出现?
答案 0 :(得分: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)) ]类ClockControl:控制{...}
答案 1 :(得分:1)
如果您正在尝试为控件绘制焦点矩形,并在将控件添加到表单后操作控件时可以看到它,那么Gaijin42's approach应该可以正常工作。
如果您正在尝试查看自定义绘制控件的外观......
如果您覆盖了控件中的OnPaint
方法,则在将控件添加到表单后查看控件时,应该会看到OnPaint
的结果(或者另一个控制)。
如果您在查看控件本身的设计器时尝试查看Paint
的结果,I don't think that is possible(至少不是VS2005):
不幸的是,这是不可能的。 当你在写行为时 用户控件的代码不是 编译和设计师实际上 使用普通用户控件来托管 孩子控制。
OnPaint
覆盖等不会运行。调试控件中的覆盖 你需要在某种程度上运行它 主办。 VS2005提供了新的控件 主持人为此目的但我发现了 即使这有时也不够。