Visual Studio 设计器和工具箱混淆

Posted

技术标签:

【中文标题】Visual Studio 设计器和工具箱混淆【英文标题】:Visual Studio Designer and Toolbox Confusion 【发布时间】:2011-10-11 19:28:29 【问题描述】:

如果您创建一个 Windows 服务项目,则会为您创建一个具有设计器窗口的“Service1”类。工具箱中 99% 的控件很容易在 Windows 服务的上下文中不可用,但设计人员很乐意允许将 GUI 控件之类的东西拖放到服务的设计人​​员界面。

真的吗?真的吗??

这一直是 Visual Studio 的现实,可以追溯到几个版本,但我一直不明白为什么 MS 似乎对这种奇怪现象不感兴趣或不知道。

但我想到了,也许有一个理由说明为什么 MS 会故意保持这种方式,而我错过了这条船。请解释?或者也许我只是有一个错误配置的 VS IDE 开发环境,它可以在其他人的机器上运行。如果是这样,我该如何解决?

当然,这不会妨碍我完成工作,但会妨碍学习努力或妨碍浏览“当前设计师画布”的相关“实际可用”组件的速度。

是的,我知道可以手动折叠工具箱的各个部分,但该答案并没有削减它。 .net 和 VS 等强大的工具应该能够确定“哪些工具与当前的设计画布相关”。也许有一个插件可以为我做这个选择?

对这一切感到好奇......

【问题讨论】:

【参考方案1】:

我认为问题在于服务的设计画布允许放置 fo 组件,这些组件是控件的超类。因此,任何控件都是一个组件,因此任何控件都可以拖放到它上面。

当然,IDE 可以测试它是否还支持 Control 接口,但可以编写控件来检测是否支持 GUI,并在这种情况下充当控件。因此,IDE 无法知道控件可以自动检测到什么。

实现这项工作的唯一方法是强制组件支持任意接口,这似乎很愚蠢。

【讨论】:

我认为这个答案是正确的。它可能需要与服务相关的组件的特殊属性,而不是接口。但无论哪种方式,如果他们现在实施,所有旧组件都会消失,这显然是不可接受的。

以上是关于Visual Studio 设计器和工具箱混淆的主要内容,如果未能解决你的问题,请参考以下文章

比较 Visual Studio 2015 和 Blend for Visual Studio [关闭]

玩转visual studio系列之类设计图

visual studio 的优点,请高手详细解答

Visual Studio 如何加载库?

Visual Studio 2019 C#下WinForm窗体设计 & 凯撒,单码,乘法逆元对的GUI

visual studio 全称是啥