【发布时间】:2021-05-23 08:04:01
【问题描述】:
我有一个自定义的 UserControl(基本上是一个花哨的 Button),它需要知道何时启用/禁用该控件以更改绘图颜色。
我在控件中添加了一个 Shadows 属性,如下所示:
Private _enabled As Boolean
Public Shadows Property Enabled() As Boolean
Get
Return Me._enabled
End Get
Set(value As Boolean)
Me._enabled = value
' My code here to change the drawing colors
End Set
End Property
当使用 GUI 设计器(预编译)创建我的控件时,此方法似乎可以正常工作。但是,当我在运行时动态创建控件时,Get 和 Set 代码永远不会运行。
有什么可能导致这种情况的想法吗?
【问题讨论】:
-
这完全是错误的做法。您应该做的是覆盖
OnEnabledChanged方法,这就是引发EnabledChanged事件的原因。 -
+ 这是一个运行时属性。
-
您的代码实际上并没有触及基本的
Enabled属性这一事实表明您实际上可能并不希望控件被真正禁用,而只是您自己的被禁用的逻辑版本。这是真的,还是您真的希望 Windows 和 .NET 将您的控件视为已禁用?如果这是您想要的,那么覆盖OnEnabledChanged实际上不会做您想做的事情,因为它将与现有的Enabled属性一起使用。
标签: vb.net winforms properties