如果我重写OnPaint并在控件上绘制一个正方形,我如何获得该e.graphics.draw...当我在设计器中预览它的时候显示出来?
发布于 2009-04-10 19:56:33
http://msdn.microsoft.com/en-us/magazine/cc164048.aspx
http://msdn.microsoft.com/en-us/magazine/cc164145.aspx
虽然您可以手动向Control.OnPaint注册以添加设计时UI,但您会发现覆盖OnPaintAdornments是一个更好的选择,因为只有在绘制控件的设计时/运行时UI之后才会调用它,这让您锦上添花(参见图20)。只需向ClockControl类添加DesignerAttribute即可完成关联: Copy Code
设计器(typeof(ClockControlDesigner))类ClockControl : Control { ... }
发布于 2009-04-10 19:57:44
如果您试图为您的控件绘制一个焦点矩形,并且在将控件添加到窗体后在操作控件时使其可见,那么Gaijin42's approach应该可以工作。
如果您正在尝试查看您的自定义绘制控件的外观...
OnPaint方法,则在将控件添加到窗体(或另一个控件)后查看控件时,应该会看到该OnPaint的结果。Paint的结果:不幸的是,这是不可能的。在编写用户控件的行为时,代码不会编译,设计器实际上使用普通用户控件来托管子控件。OnPaint覆盖等将不会运行。
要调试控件中的重写,您需要在某种主机中运行它。VS2005为此提供了一个新的控制主机,但我发现有时即使这样也是不够的。
https://stackoverflow.com/questions/738694
复制相似问题