Недавно я написал собственный DataGridViewColumn для размещения индикатора выполнения. Сам класс столбца имеет свойство, которое я хотел бы распространить на все ячейки столбца. Я использую этот код для его реализации: -
<DefaultValue(5I)> _
Public Property BlockWidth() As Integer
Get
Return _blockWidth
End Get
Set(ByVal value As Integer)
_blockWidth = value
Me.ColumnCells.ForEach(Sub(cell) cell.BlockWidth = value)
End Set
End Property
И это:-
Private ReadOnly Property ColumnCells As IEnumerable(Of DataGridViewProgressBarCell)
Get
If Me.DataGridView IsNot Nothing Then
Return Me.DataGridView.Rows.
Cast(Of DataGridViewRow).
Where(Function(r) TypeOf r.Cells.Item(Me.Index) Is DataGridViewProgressBarCell).
Select(Function(r) DirectCast(r.Cells.Item(Me.Index), DataGridViewProgressBarCell))
Else
Return New DataGridViewProgressBarCell() {}
End If
End Get
End Property
Теперь это работает во время выполнения. Если я изменю свойство BlockWidth столбца во время выполнения, все ячейки столбца изменятся, чтобы отразить изменение свойства, но я не могу заставить это работать во время разработки. Во время разработки ячейка не изменяется, изменение свойства сохраняется, но ячейка не изменяется. Я перепробовал все способы обмана, и он отказывается работать. Пожалуйста, кто-нибудь может сказать мне, что я делаю неправильно?