gpt4 book ai didi

vb.net - 自定义属性未显示在属性窗口中

转载 作者:行者123 更新时间:2023-12-01 15:15:00 28 4
gpt4 key购买 nike

我希望自定义控件根据 Enabled 属性的值提供不同的 BackColor。我继承了一个 Button,现在试图隐藏 BackColor 属性以从 View 中隐藏它,然后提供另一个名为 BackColorEnabled 的属性。

这是针对该问题的简化测试用例:

Imports System.ComponentModel

Friend Class StyledButton : Inherits Button
Private _BackColorEnabled As Color

<Browsable(False)>
Friend Shadows Property BackColor As Color
Get
Return MyBase.BackColor
End Get
Set(value As Color)
MyBase.BackColor = value
End Set
End Property

<Browsable(True)>
Friend Property BackColorEnabled As Color
Get
Return _BackColorEnabled
End Get
Set(value As Color)
_BackColorEnabled = value
End Set
End Property

Sub New()
_BackColorEnabled = SystemColors.Control
End Sub

End Class

问题是这两个属性都没有效果,即 BackColor 仍然显示,而 BackColorEnabled 不存在。根据我在网上找到的许多链接,设置 BrowsableAttribute 应该 100% 有效。那么上面的代码有什么问题呢?

最佳答案

似乎 WinForms 设计器 不喜欢将属性声明为 Friend,并完全忽略它们,即使使用来自同一程序集的控件也是如此。在我将两者都更改为 Public 之后,它就像一个魅力。

据我所知,它不应该造成范围问题,因为类本身可以保持 Friend

旁注:我首先花了相当多的时间在一个更大的项目中调试这个问题。然后开始收集有关在 SO 上提问的想法。准备了一个简化的测试用例——然后在几分钟内找到了解决方案。只是觉得与社区分享我的发现会很好。

关于vb.net - 自定义属性未显示在属性窗口中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20228167/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com