我正在尝试创建自定义控件,以便为应用程序的设计提供一些一致性。但是,当我使用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添加的行,并继续,但是我在哪里出错了才能解决这个问题?
答案 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
确保重建您的解决方案。