2013-04-24 78 views
2

我试图创建自定义控件来为应用程序的设计提供一些一致性。但是,当我使用只读字段映射某个属性时,我会在构建时发现设计器错误。现在我可以删除设计器文件中的违规代码行,并继续构建并运行我的应用程序,但首先这是令人烦恼的,其次它告诉我必须做一些根本性错误!.NET设计器在继承控件中发布只读属性

下面是添加这些控制中的一个以一种形式之后将覆盖的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添加的行,然后继续,但是我在哪里出错才能解决此问题?

回答

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 

确保重建解决方案。

+0

完美运作。谢谢 – LairdPleng 2013-04-25 04:30:45