我正在制作自定义控件,它具有控件中可用的NumberOfDatabases的属性。默认情况下,有一个名为PrimaryDatabase的ComboBox,如果NumberOfDatabases设置为1到2,则创建另一个组合框并将其放在现有ComboBox下面。看起来创建此ComboBox的代码在设计器中运行,然后在运行时再次运行。在处理像这样的动态创建的对象时,是否必须在设计器中和运行时再次创建对象?当我切换NumberOfDatabases属性时,设计器如何处理动态创建对象?任何见解都将不胜感激。
答案 0 :(得分:1)
它们只是在运行时出现并且表现得像它们一样。设计师完全没有注意到它们,因为它没有被要求创建它们。所以你不能选择它们,也不能设置它们的属性。并且它们不会被序列化到usercontrol的InitializeComponent()方法中。也无法用鼠标或键盘操作它们,设计师截获了这一点。所以你只看到它们。 WYSIWYG是Winforms设计师的一个强大目标。
实际正确的可能性往往是不确定的。通常会有一些运行良好的dbase代码,它正常运行的几率永远不会好,因为你没有正确的配置。设计时的异常非常讨厌并且可以破坏设计,使得东西消失而没有程序员注意到。 YMMV。
使用代码中的DesignMode property来防止在设计时运行有风险的代码。