【问题标题】:How to get image/icon below form designer for my custom component when added on form in design mode?在设计模式下添加到表单上时,如何在表单设计器下方为我的自定义组件获取图像/图标?
【发布时间】:2012-07-27 00:49:12
【问题描述】:

我正在使用 Visual Studio 2010、C# 和 WinForms,并创建了如下自定义组件:

public partial class SlidePanel : Panel 
{
    some code here...
}

所以它是一个组件类而不是用户控件。

我想要的是当我在 windows 窗体上拖动我的组件以在窗体下方获得一个代表我的组件的图标时。一个示例是现有的绑定源控件 - 当您将其添加到表单时,它会在表单下方(在表单设计器上)为您提供一个图标,您可以选择该图标然后更改属性。我怎样才能做到这一点?图标可以是通用的。

【问题讨论】:

  • 面板是控件,而不是组件。
  • 好的,我可以控制吗?
  • 从组件而不是面板继承。但我猜这不是你真正想要的。如果您的表单上有很多东西在设计视图中找不到,那么您的表单上的东西太多了。想办法减少混乱的表格,你的用户会喜欢的。
  • 感谢您的努力,我正在为自己做这件事。所以没有其他人在做这件事。所以基本上我做了一个可以扩展和收缩的面板(魔术计时器),我没有太多的表单控件(我可以找到它),但我可以看到它可以完成(通过绑定源代码控制,telerik thema控制),我想学习,知道如何去做。我有一种强烈的感觉,这并不难。我有谷歌它,但不知道要搜索什么。 “表单设计器下方显示的用户控件图像/图标”没有帮助:(
  • 从组件继承成功了,你看我是对的,这很容易:)。谢谢你。现在我如何弄清楚如何组合组件和面板:)。

标签: c# winforms visual-studio components custom-component


【解决方案1】:

所以它是一个组件类而不是用户控件。

不,两者都不是。它仍然是一个面板控件,您只是自定义了它的行为。如果此类在您的解决方案的项目中,那么您将在编译后自动将其添加到工具箱中。在顶部,就在箭头之后。如果这没有发生,那么您的设置错误。工具 + 选项、Windows 窗体设计器、常规,确保 AutoToolboxPopulate 设置为 True。

如果您确实想要您描述的内容(底部添加图标),那么您需要创建一个派生自 Component 的类。这是一种非常不同的动物,它不能在形式上具有视觉表示。它当然不能像面板之类的东西。示例见this answer

【讨论】:

  • 当我从组件派生它时就是这种情况。现在我努力让它像面板一样工作。可耻的 C# 不支持多个派生:组件、面板。我找不到任何好的信息,网上的说明如何做到这一点。我需要实现什么才能在设计模式下绘制我的组件?
  • 我在我的工具箱中看到它,当我将它添加到表单上时,我需要在当前添加组件实例的设计器下方看到图标。(如果缩小了,那么我看不到它,那就是为什么我需要下面的图标,所以我不必手动搜索)
  • 抱歉,你误会了组件和控件的区别。不太确定如何让你越过那个心理障碍,很明显“在底部”与“在形式上”是不一样的。一年后你会完全得到它。
【解决方案2】:

我知道这已经很晚了,但我只是在阅读相同的问题,这个问题引起了我的兴趣。我在这里假设您要做的是在您的表单上有一个可以在设计器中缩小的控件。结果,这将使控件从窗体中消失。通过在表单下方有一个组件,您仍然可以通过选择该组件来编辑其属性。

我的想法是尝试使用 ControlDesigner。我不确定这是否可行,这不是一个简单的解决方案,我目前没有时间研究它,但您可以通过两种方式来这里。

一:ControlDesiger 将允许您使用阴影属性,因此当您在设计器中设置它们时它们没有效果,这就是您设置为不可见的控件在设计器中保持可见的原因。阴影属性将没有效果或将具有您提供的效果,但随后会在序列化时更新实际的属性。

二:您实际上可以在控件设计器中动态创建一个组件,并在您添加面板派生控件时将其添加到窗体中。然后,当您在组件中设置属性时,此更改可以反映在您的控件中。几年前我做了类似的事情只是为了浪费时间,但我并没有花很多时间真正让它正常工作,所以可能不会发生。

只是一些想法

丹尼哈特

【讨论】:

    猜你喜欢
    • 2018-07-16
    • 2023-03-27
    • 2013-04-29
    • 2015-05-14
    • 1970-01-01
    • 2018-09-15
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多