2013-04-24 79 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