是否可以将控件转换为组件或组件以控制winforms?并且可以使winforms中的按钮透明化吗?
组件和控件之间存在巨大差异.Component是一个非常简单的类,它有3个成员用于设计时支持,6个成员用于运行时支持,就是这样.您可以在表单上删除一个,以便可以编辑其属性.它在运行时所做的任何有用的东西都必须由组件本身实现,Windows Forms没有任何帮助.
Control通过添加成员来扩展Component,这些成员允许它具有良好定义的运行时行为,最明显的是通过包装本机Windows窗口.您可以看到它并单击它.大工作,需要数百名成员,尽管其中大多数成员在设计师中并不可见.
将控制转换为组件但仍保留控制特性是可能的.ToolStripItem就是这样做的.但是,它需要大量代码,因为您必须替换Windows窗口提供的每个功能.这很难,即使对于微软来说,ToolStripItem类也有很多bugz.您从中获得的唯一好处是可以避免分配窗口句柄.有时引人注目,windows是昂贵的对象,可能会使代码运行缓慢.而且你仍然坚持窗户的工作方式,例如透明度较低的支持.
支持组件的透明度不是问题,它只是多层涂料相互叠加.但是,你必须提供Control所做的一切.
说到这一点,这已经完成了.它是WPF的确切模型.WPF应用程序(通常)只有一个本机窗口句柄.其他所有内容都由WPF渲染引擎绘制在其中.因此,它可以毫无困难地支持透明效果.任何许多其他的花里胡哨,如旋转控制,你不能得到一个原生的窗口.或浏览器.
如果您想坚持使用WF,请详细说明您需要什么样的透明效果.有很多方法可以获得一个,这取决于你想要做什么.Fwiw,StackOverflow的一个很好的问题就是一个好的答案.