首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖OnPaint

覆盖OnPaint
EN

Stack Overflow用户
提问于 2009-04-10 19:54:58
回答 2查看 3.5K关注 0票数 3

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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 { ... }

票数 6
EN

Stack Overflow用户

发布于 2009-04-10 19:57:44

如果您试图为您的控件绘制一个焦点矩形,并且在将控件添加到窗体后在操作控件时使其可见,那么Gaijin42's approach应该可以工作。

如果您正在尝试查看您的自定义绘制控件的外观...

  • 如果在控件中重写了OnPaint方法,则在将控件添加到窗体(或另一个控件)后查看控件时,应该会看到该OnPaint的结果。
  • 如果您在查看控件本身的设计器I don't think that is possible (至少没有使用VS2005)时尝试查看Paint的结果:

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

要调试控件中的重写,您需要在某种主机中运行它。VS2005为此提供了一个新的控制主机,但我发现有时即使这样也是不够的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/738694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档