2011-04-23 73 views
0

我有一个关于设计时事物的问题:C#在设计时获取当前表单的所有控件

我制作了一个带有属性“Links”的组件。 这些链接是控件。现在我想创建一个UI对话框(用于在属性网格中编辑此属性)。

如何获得当前表单的所有控件?我认为组件与它有联系,但是在哪里?我找不到任何东西。

谢谢:)

回答

1

这是相当untrivial做的,我不知道那做到这一点.NET组件的任何实例。您可以在设计时使用“网站”属性获取表单,但存在问题。很难处理的是用户删除控件,这些控件已添加到控件集合中。我不知道有什么好的触发器可以保持您的收藏有效,除此之外还必须使用自定义设计器来进行表单或用户控件。

这里有一个更好的捕鼠器,例如你会看到它被HelpProvider和ErrorProvider组件使用。请注意他们如何将属性添加到窗体上的所有其他控件。这是通过实现IExtenderProvider接口完成的。在MSDN library article中有一个很好的例子。

+0

嗯......是的很糟糕: -/ 我知道Extender-Properties。但他们不是我想要做的,因为我需要分配另一个控制... 嗯,也许我找到了解决方案。 – SharpShade 2011-04-23 16:03:30

2

要获取所有当前窗体的控件,然后使用下面的代码来获取所有窗体上的控件的集合:

MyForm.Controls

See this MSDN help

编辑:

也许这些会有帮助吗?

Design-time editor support for controls collection

http://social.msdn.microsoft.com/Forums/en-US/winformsdesigner/thread/64df27e7-8502-42ac-8634-cf8a8937d922/

Adding design-time support for a nested container in a custom/usercontrol (Winforms)

+0

我的意思是在设计时,而不是运行时;)但是也要感谢。 – SharpShade 2011-04-23 16:05:44

-1

不知道这是你想要的。

我“失去”了意外删除它的文本属性的标签控件。

在看了这里的讨论之后,我终于意识到,通过在设计时访问ANY控件属性,我可以使用属性窗口顶部的下拉菜单来定位控件名称。选择名称显示控件在窗体上的位置,并在属性编辑器中显示它的属性。

相关问题