- - PR -
DataGridViewTextBoxColumnに追加したプロパティの値が保存されない
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-10-13 11:49
返信ありがとうございます。
>>というように、MyTextBoxCellクラスにCloneメソッドを、MyTextBoxColumnクラスに >>CellTemplateプロパティのオーバーライドをやっていました。デザイン時には、 >>〜Columnクラスのプロパティは内部的に〜Cellクラスのプロパティをアクセスする >>ような感じですね・・・。 ちょっと時間が取れずに試せていないのですが、MyTextBoxCellのクローンになるのですね。またご報告します。 当面は色を個別に変更して使用することもないのですし、コードで指定すれば回避できるのですが、デザイン時に表示される画面で保持できればと思ったものですから。ありがとうございます。 |
|
投稿日時: 2006-10-17 21:06
悩みましたがようやく思うような動作をしてくれるようになりました。アドバイスありがとうございました。
-------------------------- Imports System.ComponentModel Public Class MyTextBoxColumn Inherits System.Windows.Forms.DataGridViewTextBoxColumn Private _GotFocusBackColor As Color 'フォーカス取得時の背景色 Private _LostFocusBackColor As Color 'フォーカス喪失時の背景色 <Category("表示")> _ <Description("フォーカス取得時の背景色を設定します。")> _ Public Property GotFocusBackColor() As Color Get Return DirectCast(MyBase.CellTemplate, MyTextBoxCell).GotFocusBackColor End Get Set(ByVal value As Color) DirectCast(MyBase.CellTemplate, MyTextBoxCell).GotFocusBackColor = value End Set End Property Public Sub New() InitializeComponent() '呼び出しの後で初期化を追加します。 Me.CellTemplate = New MyTextBoxCell End Sub Private Shadows Property CellTemplate() As MyTextBoxCell Get Return MyBase.CellTemplate End Get Set(ByVal value As MyTextBoxCell) MyBase.CellTemplate = value End Set End Property End Class Public Class MyTextBoxCell Inherits System.Windows.Forms.DataGridViewTextBoxCell Private _GotFocusBackColor As Color ' = Color.LightYellow 'フォーカス取得時の背景色 Private _LostFocusBackColor As Color 'フォーカス喪失時の背景色 <Category("表示")> _ <Description("フォーカス取得時の背景色を設定します。")> _ Public Property GotFocusBackColor() As Color Get Return _GotFocusBackColor End Get Set(ByVal value As Color) _GotFocusBackColor = value End Set End Property Public Overrides Function Clone() As Object Dim obj As MyTextBoxCell obj = MyBase.Clone() obj.GotFocusBackColor = _GotFocusBackColor Return obj End Function Public Sub New() Try _GotFocusBackColor = Color.LightYellow Catch End Try End Sub Protected Overrides Sub OnEnter(ByVal rowIndex As Integer, ByVal throughMouseClick As Boolean) Dim col As MyTextBoxColumn col = Me.OwningColumn 'ZestTextBoxColumnの情報を参照する If Not col Is Nothing Then _GotFocusBackColor = DirectCast(col.CellTemplate, MyTextBoxCell).GotFocusBackColor End If _LostFocusBackColor = Style.BackColor Style.BackColor = _GotFocusBackColor End Sub Protected Overrides Sub OnLeave(ByVal rowIndex As Integer, ByVal throughMouseClick As Boolean) Style.BackColor = _LostFocusBackColor End Sub End Class |