C# 如何使动态用户控件与设计器配合良好

C# 如何使动态用户控件与设计器配合良好,c#,winforms,visual-studio-2010,windows-forms-designer,C#,Winforms,Visual Studio 2010,Windows Forms Designer,我有一个动态用户控件,它根据对象组中成员的数量动态实例化各种条和标签。这个功能运行得很好,但问题是我不是这个项目的唯一开发者。我是团队的新成员,“高级”成员希望所有组件都在设计器中工作。由于用户控件的组件是在运行时生成的,因此我不确定如何使其中的一些/任何组件显示在设计视图中。这甚至是一个选项吗?我认为这是不可能的,因为没有可供设计者显示的标记。我发现很难相信他们会期望在设计器中显示动态创建的控件 编辑 再想一想,为什么不在标记中添加几个控件的硬编码实例,并具有添加/删除的功能。这样,控件将显示

我有一个动态用户控件,它根据对象组中成员的数量动态实例化各种条和标签。这个功能运行得很好,但问题是我不是这个项目的唯一开发者。我是团队的新成员,“高级”成员希望所有组件都在设计器中工作。由于用户控件的组件是在运行时生成的,因此我不确定如何使其中的一些/任何组件显示在设计视图中。这甚至是一个选项吗?

我认为这是不可能的,因为没有可供设计者显示的标记。我发现很难相信他们会期望在设计器中显示动态创建的控件

编辑


再想一想,为什么不在标记中添加几个控件的硬编码实例,并具有添加/删除的功能。这样,控件将显示在设计器中,但您仍然可以添加/删除实例。在这种情况下,这可能是最好的折衷办法。

为什么不同时提供在设计时和运行时定义动态控件数量的可能性

  • 在自定义控件类中,可以定义指定控件数量的属性。在该属性的set{}方法中实现添加/删除控件

  • 使您的财产成为“设计师财产”。看

  • 请记住,设计器实际上创建了类的实例。此外,当用户在设计器中更改您的“属性”时,将调用set{}方法


    我希望这有助于

    老实说,他们不想要任何动态控件,而是创建5-7个相同控件,每个控件具有不同数量的条和标签(由对象组指定)。我做了一个一刀切的动态控件。他们想要一个硬编码的控件数量?如果您需要更多的控件实例,该怎么办?听起来不对。。。如果有理由使控件成为动态的,您不应该为了满足设计者的要求而牺牲您的设计。这只是对设计施加了不必要的限制。我同意,但请求置若罔闻,事实是他们沉迷于在设计师身上看到形式的每一个元素。如此之多以至于我们的项目由数百个这样的重复控件组成。所以,是的,这意味着他们更希望有一个硬编码的控制数量,所以他们有一个视觉。我希望有一种方法可以绕过这个愚蠢的问题,让设计师为我的动态控件显示一些默认值,以安抚大师们,同时正确地编码这个东西。@Siegeon:请参阅我编辑过的答案。这是我能想到的满足他们愿望的唯一方法,不会对设计施加限制。这确实是一个值得畏缩的方法,尽管。。。只是说;)@Siegeon:我记得你提到过,你是这个职位的新手,但是当开发者把他们的偏好放在用户体验之前时,最终是用户为其支付了成本。如果你真的提起它,我会从这个角度来为那些将要使用这个系统的人辩护。哦,这看起来很酷,我从来没有尝试过这样的事情,但这似乎正是我需要的。我会看看我是否能解决它。非常感谢。