Я сейчас работаю над многопоточным проектом.Идея состоит в том, чтобы внедрить защиту от угроз в мои собственные элементы управления.Теперь я хочу переопределить свойства DataGridViewRowCollection
, такие как DataGridView.Rows.Add()
и DataGridView.Rows.Remove(row as DataGridViewRow)
, с помощью моего кода для защиты от угроз.
Моя идея состояла в том, чтобы использовать собственный DataGridViewRowCollection XRowCollection
вместо базового DataGridViewRowCollection
.Когда я пытаюсь переопределить свойство Rows
, я получаю сообщение компилятора:
"Открытые переопределяют строки свойства ReadOnly как XRowCollection" и "Открытые строки свойства Shadows как System.Windows.Forms.DataGridViewRowCollection"не могут перегрузить друг друга, потому что они отличаются только типами возвращаемых данных
Я был бы благодарен за любое решение или любые альтернативные идеи для реализации кода защиты от угроз непосредственно в моем контроле Cutsom.
Public Class XDataGridView
Inherits System.Windows.Forms.DataGridView
Private _Rows As XRowCollection
Public Overrides ReadOnly Property Rows As XRowCollection
Get
If _Rows Is Nothing Then
_Rows = New NoxRowCollection(Me)
End If
Return _Rows
End Get
End Property
End Class
Public Class XRowCollection
Inherits DataGridViewRowCollection
Public Sub New(dataGridView As XDataGridView)
MyBase.New(CType(dataGridView, DataGridView))
End Sub
Private Delegate Sub RowsRemoveCallback(DataGridViewRow As System.Windows.Forms.DataGridViewRow)
Public Shadows Sub Remove(DataGridViewRow As System.Windows.Forms.DataGridViewRow)
If MyBase.DataGridView.InvokeRequired Then
Dim d As New RowsRemoveCallback(AddressOf Remove)
MyBase.DataGridView.Invoke(d, New Object() {DataGridViewRow})
Else
Me.DataGridView.Rows.Remove(DataGridViewRow)
End If
End Sub
End Class