Проблемы с пользовательским DataGridViewRowCollection - PullRequest
0 голосов
/ 17 декабря 2018

Я сейчас работаю над многопоточным проектом.Идея состоит в том, чтобы внедрить защиту от угроз в мои собственные элементы управления.Теперь я хочу переопределить свойства 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...