Как показать свойство структуры в ячейке datagridview с помощью пользовательского класса datasource
Привет У меня есть этот код там где есть
- список (класса) (класс это со структурой внутри)
- datagridview, который привязан к классу
Когда я запускаю код, я вижу, что ячейка первого и второго столбцов заполнена правильно.
Но в третьем столбце ячейки заполнены с 'форму form1.schoolSubjects, но я хочу увидеть обычное свойство''.
И когда я наведу курсор мыши на ячейки третьего столбца, я хочу увидеть custmized значение 'toString'.
Я заглянул в интернет и обнаружил, что помощь может прийти от
Система.ComponentModel.значение DisplayName
или от
Система.ComponentModel.Интерфейс icustomtypedescriptor
Но я не понимаю, как.
P.S. Я знаю, что есть способ заставить его изменить значение ячеек во время выполнения (т. е. изменить вывод события cellPaint), но я хочу напрямую привязать правильный вывод из кодов классов или структур.
Вот код
Public Class Form1 Dim dgv As DataGridView Dim classe As List(Of students) Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Size = New Size(400, 200) dgv = New DataGridView dgv.Size = New Size(Me.Size.Width - 10, Me.Size.Height - 20) dgv.Location = New Point(0, 0) Me.Controls.Add(dgv) classe = New List(Of students) From {New students("John", "Brown", New schoolSubjects(4, 10, 8, 5)), New students("James", "Morrison", New schoolSubjects(3, 4, 10, 2))} dgv.DataSource = classe End Sub End Class Public Class students Sub New(ByVal StudentFirstName As String, ByVal StudentSecondName As String, ByVal StudentSubjects As schoolSubjects) firstName = StudentFirstName secondName = StudentSecondName Subjects = New schoolSubjects(StudentSubjects.Mathematics, StudentSubjects.English, StudentSubjects.ModernLanguage, StudentSubjects.Science) End Sub Public Property firstName As String Public Property secondName As String Public Property Subjects As schoolSubjects End Class Public Structure schoolSubjects Sub New(ByVal MathematicsVote As Integer, ByVal EnglishVote As Integer, ByVal LanguageVote As Integer, ByVal ScienceVote As Integer) Mathematics = MathematicsVote English = EnglishVote ModernLanguage = LanguageVote Science = ScienceVote Average = (Mathematics + English + ModernLanguage + Science) / 4 tostring = String.Concat("Mathematics: ", Mathematics.ToString, vbCrLf, _ "English: ", English.ToString, vbCrLf, _ "ModernLanguage: ", ModernLanguage.ToString, vbCrLf, _ "Science: ", Science.ToString) End Sub Public Property Mathematics As Integer Public Property English As Integer Public Property ModernLanguage As Integer Public Property Science As Integer Public Property Average As Integer Public Shadows Property tostring As String End Structure
Есть решение?
Что я уже пробовал:
Я пытался
<System.ComponentModel.DisplayName("Average")> Public Property Subjects As schoolSubjects
но я должен понять, если это правильный путь и как его установить.