DOBON.NET DOBON.NETプログラミング掲示板過去ログ

継承DataGridViewColumnのプロパティ変更方法

環境/言語:[VB.NET]
分類:[.NET]

2008/11/23(Sun) 02:39:42 編集(投稿者)

こんばんは。
DataGridViewColumnを継承して自作のプロパティを追加しました。
それをDataGridViewの列に追加したところ、列の「編集...」で追加したプロパティーの値を変更できるのですが、OKを押して確定しても値が登録されません。(Designer.vbにプロパティーの値が書き込まれません)
VB.NETの仕様なのかもしれませんが、対処の仕方があれば教えてください。


  Public Class MyDataGridViewTextBoxColumn
    Inherits DataGridViewColumn

    Private m_FieldName As String = ""

    Public Property FieldName() As String
      Get
        Return m_FieldName
      End Get
      Set(ByVal value As String)
        m_FieldName = value
      End Set
    End Property

    Public Sub New()
      Me.CellTemplate = New MyDataGridViewTextBoxCell()
    End Sub

  End Class


  Public Class MyDataGridViewTextBoxCell
    Inherits DataGridViewTextBoxCell

  End Class
自己解決しました。お騒がせしましてすいませんでした。
前のスレを削除してもいいのですが、Netで調べても解決方法がなかなか
出てこなかったので、参考のために解決方法を記載します。

MyDataGridViewTextBoxColumnの中にClone関数をOverridesすれば
デザインモードで値を保持することができました。


  Public Class MyDataGridViewTextBoxColumn
    Inherits DataGridViewColumn

' 以下を追加しました
    Public Overrides Function Clone() As Object
      Dim cloneObj As MyDataGridViewTextBoxColumn = MyBase.Clone
      cloneObj.FieldName = Me.m_FieldName
      Return cloneObj
    End Function
' 以上

    Private m_FieldName As String = ""

    Public Property FieldName() As String
      Get
        Return m_FieldName
      End Get
      Set(ByVal value As String)
        m_FieldName = value
      End Set
    End Property

    Public Sub New()
      Me.CellTemplate = New MyDataGridViewTextBoxCell()
    End Sub

  End Class

  Public Class MyDataGridViewTextBoxCell
    Inherits DataGridViewTextBoxCell

  End Class
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板