Ian*_*oyd 5 visual-studio-2010 windowless visual-studio winforms
Visual Studio WinForms工具箱中的每个控件都必须来自Control?
Visual Studio是否支持无窗口控件?
您在Visual Studio中添加到工具箱的每个控件:
必须1来自Control,这是一个窗口控件周围的包装.
不幸的是,Windowed控件非常"重"; 拥有很多它们,特别是嵌套,会导致WinForms的性能受损.
在过去,我通过创建聚合自定义控件来解决问题.自定义控件内部包含其他无窗口控件:
PictureBox)Label)Label)Panel)这些对于缓解WinForms中的性能问题非常有用,但它们仍然存在于代码中.
我想做其他开发环境允许的,是一个Control不创建Windows窗口的版本.我希望Visual Studio工具箱能够接受**无窗*控件.
我知道如果我真的想要无窗口控件:我应该切换到WPF.但这太过分了.
Visual Studio WinForms是否支持无窗口控件?
1或不
首先,请查看可敬的 Raymond Chen 的这篇文章: http://blogs.msdn.com/b/oldnewthing/archive/2005/02/11/371042.aspx
是的。 欢迎您创建不派生自 的“控件” Control。我在我的应用程序中创建了几个本机支持单击、分层等的无窗口控件,我将它们绘制到屏幕外缓冲区,然后将它们直接绘制在某些父级Form或Control(例如PictureBox)上。这很简单,但并不简单,因为您需要自己用代码管理一切。
不可以。 对于任何派生控件设计器Control(例如将它们放置在面板或窗体上),Windows 窗体设计器中将不支持任何无窗口控件,因此您将无法进行拖放窗体设计。
正如汉斯所指出的,ToolStrip和MenuStrip(无窗口控件)就是这样的例子。MenuStrip请注意,当您在 a 上创建新组件时Form, 会MenuStrip被放置在表单下方的组件托盘中。它MenuStrip有一组与其关联的自定义设计器类,以支持自定义绘制和“在此处键入”功能,以及用于添加和删除菜单项的对话框。请注意,“子”无窗口控件(例如 )ToolStripButton在工具箱中不提供直接拖放到窗体上的支持 - 只有自定义设计器知道这一点。自定义设计器MenuStrip还支持选择子无窗口控件,以便您可以在“属性”窗口中编辑每个项目的属性。
我无法想象这适合您的情况(除非您正在创建一些用于转售的控件),但如果您非常坚定,您可以以几乎相同的方式为您的一组无窗口控件创建设计器支持:
Component将用于管理您的无窗口控件。例如,您可以将此类称为WindowlessWidgetManager. 编译后,该控件将位于您的工具箱中。WindowlessWidgetManager 可以包含无窗口控件的集合,并为画布(例如 或 )提供绘画和其他 UIForm支持PictureBox。ComponentDesigner支持在设计时添加和删除自定义控件等操作。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.componentmodel.design.componentdesigner(v=VS.90).aspx这是一个非常漫长的过程,有很多注意事项,但如果这是您希望实现的目标,那么该功能就在那里。
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |