gpt4 book ai didi

c# - 是否可以将控件转换为组件或组件以在 winforms 中进行控制?

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:37 25 4
gpt4 key购买 nike

在winforms中是否可以将控件转换为Component或组件来控制?并且可以将winforms中的按钮透明化?

最佳答案

组件和控件之间有一个巨大的区别。 Component是一个非常简单的类,它有3个成员用于设计时支持,6个成员用于运行时支持,仅此而已。您可以将其中一个拖放到窗体上,以便可以编辑其属性。它在运行时所做的任何有用的事情都必须由组件本身实现,Windows 窗体没有任何帮助。

Control 通过添加成员来扩展 Component,这些成员允许它也具有明确定义的运行时行为,最显着的是通过包装 native Windows 窗口。您可以看到它并单击它。一项艰巨的任务,需要数百名成员,尽管他们中的大多数在设计器中是不可见的。

将控件变成组件但仍保留控件特性是可能的。 ToolStripItem 就是这样做的。但是,它需要大量代码,因为您必须替换 Windows 窗口提供的每个功能。这很难,即使对于 Microsoft,ToolStripItem 类也有很多错误。您从中获得的唯一好处是您可以避免分配窗口句柄。有时这很引人注目,窗口是昂贵的对象并且会使您的代码运行缓慢。而且您受困于窗口的工作方式,例如对透明度的支持不佳。

支持组件的透明度不是问题,它只是相互叠加的多层绘画。但是,您必须提供控件所做的一切。

言归正传,这个已经做好了。它是 WPF 的确切模型。一个 WPF 应用程序(通常)只有一个 native 窗口句柄。其他所有内容都由 WPF 渲染引擎在其中绘制。因此它可以毫无问题地支持透明效果。许多其他花里胡哨的功能,例如旋转控件,您无法使用 native 窗口来完成。或者浏览器。

如果你想坚持使用 WF,请详细说明你需要什么样的透明效果。有很多方法可以得到一个,这取决于你想做什么。 Fwiw,StackOverflow 上的好问题与好答案一样长。

关于c# - 是否可以将控件转换为组件或组件以在 winforms 中进行控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2011518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com