2

アプリケーションの設計にある程度の一貫性を持たせるために、カスタム コントロールを作成しようとしています。ただし、読み取り専用の代替手段でプロパティをシャドウすると、ビルド時にデザイナー エラーが発生します。これで、デザイナー ファイル内の問題のあるコード行を削除し、アプリケーションのビルドと実行を続けることができますが、まずこれがいらいらします。

以下は、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 が追加した行を削除して続行することはできますが、どこでこの問題が発生したのでしょうか?

4

1 に答える 1

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

必ずソリューションを再構築してください。

于 2013-04-24T14:56:53.320 に答える