VB.Net 设计器如何在运行时处理动态创建的对象
VB.Net How Does the Designer Handle Dynamically Created Objects at Runtime
我正在制作一个自定义控件,它有一个 属性 用于控件中可用的 NumberOfDatabases。默认情况下有一个名为 PrimaryDatabase 的 ComboBox,如果 NumberOfDatabases 设置为 1 到 2,则会创建另一个组合框并将其放在现有 ComboBox 的下面。看起来创建此 ComboBox 的代码在设计器中是 运行,然后在运行时再次 运行。在处理像这样动态创建的对象时,是否必须在设计器中和运行时再次创建对象?当我切换 NumberOfDatabases 属性 时,设计师如何处理动态创建对象?任何见解将不胜感激。
它们的出现和行为就像它们在运行时一样。设计师在其他方面完全没有注意到它们,因为没有要求创建它们。所以你不能 select 它们也不能设置它们的属性。而且它们不会被序列化到用户控件的 InitializeComponent() 方法中。也不能用鼠标或键盘操作它们,设计者将其拦截。所以你只是看到它们。所见即所得是 Winforms 设计器的一个重要目标。
这 实际上 正确的可能性不大。通常有某种运行良好的 dbase 代码,它正常运行的可能性从来都不是很好,因为您没有正确的配置。设计时的异常非常讨厌,可以破坏设计,让东西在程序员不注意的情况下消失。 YMMV.
在代码中使用 DesignMode property 以防止在设计时 运行 出现有风险的代码。
我正在制作一个自定义控件,它有一个 属性 用于控件中可用的 NumberOfDatabases。默认情况下有一个名为 PrimaryDatabase 的 ComboBox,如果 NumberOfDatabases 设置为 1 到 2,则会创建另一个组合框并将其放在现有 ComboBox 的下面。看起来创建此 ComboBox 的代码在设计器中是 运行,然后在运行时再次 运行。在处理像这样动态创建的对象时,是否必须在设计器中和运行时再次创建对象?当我切换 NumberOfDatabases 属性 时,设计师如何处理动态创建对象?任何见解将不胜感激。
它们的出现和行为就像它们在运行时一样。设计师在其他方面完全没有注意到它们,因为没有要求创建它们。所以你不能 select 它们也不能设置它们的属性。而且它们不会被序列化到用户控件的 InitializeComponent() 方法中。也不能用鼠标或键盘操作它们,设计者将其拦截。所以你只是看到它们。所见即所得是 Winforms 设计器的一个重要目标。
这 实际上 正确的可能性不大。通常有某种运行良好的 dbase 代码,它正常运行的可能性从来都不是很好,因为您没有正确的配置。设计时的异常非常讨厌,可以破坏设计,让东西在程序员不注意的情况下消失。 YMMV.
在代码中使用 DesignMode property 以防止在设计时 运行 出现有风险的代码。