【问题标题】:How to create a custom scrollable user control without BackgroundImage property in VB.NET for WinForms如何在 VB.NET 中为 WinForms 创建没有 BackgroundImage 属性的自定义可滚动用户控件
【发布时间】:2014-07-22 09:36:29
【问题描述】:

我希望创建一个不包含 BackgroundImage 属性的自定义用户控件。

我知道您不能(显然没有可行的解决方案)创建一个继承另一个控件的控件然后删除公共属性,但是,我有以下代码

Public Class Board

End Class

即使我没有“继承”任何其他控件,它仍然有大量我不希望拥有的属性。我能够使用 Visual Basic 6 创建一个 100% 自定义控件,它不包含任何我不想包含的属性。

如何在 VB.NET 2012 中实现相同的目标(无需使用 VB6 或“过时”代码)

我已经看到设计的控件不具有此属性,因此我只能假设这是可能的——只是没有关于该主题的文档,并且与此平行的任何主题都是模糊的或无功能的。

【问题讨论】:

  • 你看到什么样的道具?由于 Control 已经有 BackGroundImage,您可能必须从 Component 开始。
  • 为什么不覆盖该属性,将其设置为只读并设置 EditorBrowsableState.Never
  • 它不会显示在属性窗口中,但是如果你使用它,智能会在代码中看到它......很糟糕,但这就是你继承另一个控件时得到的结果。
  • Mr.CoD -- 我已经研究过这些例子。关于“EditorBrowsableState”等的简单事实是它们不可用——尤其是在 [blah(bool)] function () .... 的上下文中
  • @Plutonix - 不知道你的意思。我看到了很多属性,我创建了 UserControl 作为它自己的项目作为 WinForms UserControl 项目类型。

标签: vb.net winforms user-controls


【解决方案1】:

如果你想实现一个控件,你必须继承 Control 类。当然,它有很多属性,.NET 控件比 VB6 控件具有更多的功能。没什么好担心的,如果你想隐藏一个属性,那么你可以使用一个属性:

Imports System.ComponentModel

Public Class MyControl
    Inherits ScrollableControl

    <Browsable(False), EditorBrowsable(EditorBrowsableState.Never)> _
    Public Overrides Property BackgroundImage As Image
        Get
            Return MyBase.BackgroundImage
        End Get
        Set
            MyBase.BackgroundImage = value
        End Set
    End Property

End Class

如果您想强制执行它以使客户端程序员无法作弊,那么您也可以覆盖 PaintBackground() 方法:

Protected Overrides Sub OnPaintBackground(pevent As PaintEventArgs)
    pevent.Graphics.Clear(Me.BackColor)
End Sub

【讨论】:

  • 为类“Board”指定的基类“System.Windows.Forms.ScrollableControl”不能与其其他部分类型之一的基类“System.Windows.Forms.UserControl”不同。在 UserControl 上使用上面的代码
  • 好吧,如果你想从 UserControl 派生,那么使用它作为基类。很明显,不是吗?
  • _ ... 有效。只是无法扩展控制,但这不是我的问题。谢谢你。从“UserControl”派生的内容并不那么明显......因为它被认为是所有控件的基础,但是它不允许它的任何派生的事实,否则显示:)
  • 这很可悲......只是说。
  • 啊,我们家里有人有更好的答案。嗯,可惜他不会和我们分享……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
  • 2020-12-24
  • 2016-11-13
相关资源
最近更新 更多