.NET Designer在继承的控件中以只读方式发出阴影属性

时间:2013-04-24 06:40:55

标签: vb.net winforms controls override

我正在尝试创建自定义控件,以便为应用程序的设计提供一些一致性。但是,当我使用readonly alternatvie遮蔽属性时,我会在构建时遇到设计器错误。现在我可以删除设计器文件中有问题的代码行并继续构建和运行我的应用程序,但首先这很烦人,其次它告诉我,我必须做一些根本错误的事情!

以下是覆盖datagridview

的控件示例
Class standardDataGridView
Inherits DataGridView

Public Sub New()
    MyBase.New()
    Me.RowHeadersVisible = False
    MyBase.SelectionMode = DataGridViewSelectionMode.FullRowSelect
    MyBase.MultiSelect = False
    Me.ReadOnly = True
    Me.BackgroundColor = Color.White
    Me.AllowUserToDeleteRows = False
    Me.AllowUserToResizeRows = False
    Me.AllowUserToAddRows = False
End Sub

Public Shadows ReadOnly Property SelectionMode As DataGridViewSelectionMode
    Get
        Return MyBase.SelectionMode
    End Get
End Property

Public Shadows ReadOnly Property MultiSelect As Boolean
    Get
        Return MyBase.MultiSelect
    End Get
End Property

End Class

在向表单添加其中一个控件之后的第一个版本中,或者在更改任何属性之后,Visual Studio将以下行添加到设计器文件中:

Me.standardDataGridView1.MultiSelect = False
Me.standardDataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

导致以下构建错误

Property 'MultiSelect' is 'ReadOnly'.
Property 'SelectionMode' is 'ReadOnly'

正如我所说......我可以删除Visual Stuido添加的行,并继续,但是我在哪里出错了才能解决这个问题?

1 个答案:

答案 0 :(得分:2)

尝试告诉表单设计者不要序列化这些属性:

Imports System.ComponentModel

<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
Public Shadows ReadOnly Property SelectionMode As DataGridViewSelectionMode
  Get
    Return MyBase.SelectionMode
  End Get
End Property

<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
Public Shadows ReadOnly Property MultiSelect As Boolean
  Get
    Return MyBase.MultiSelect
  End Get
End Property

确保重建您的解决方案。