Вопрос

я пытаюсь создать ObjectDataSource, который я могу использовать для привязки к BindingSource, который, в свою очередь, должен быть привязан к ComboBox.

Я создал простой класс и простой список для этого класса (см. Ниже).

  1. Класс Times list не отображается в моем наборе инструментов, поэтому я не могу перетащить его в форму, чтобы я мог выбрать его в качестве источника данных для bindingsource.
  2. Второй вариант - создать новый источник данных проекта (ObjectDataSource).Здесь предлагается "выбрать объект, к которому вы хотите привязаться".Я добавил переменную friend / public / private в Form1, которая создает экземпляр класса Times.Однако эта переменная не отображается.Единственный объект, который появляется в пространстве имен моего проекта, - это Form1.

Что я упускаю из виду?

Public Class Time
    Private _timeValue As String
    Private _timeDisplay As String

    Public Sub New(ByVal Value As String, ByVal Display As String)
        Me._timeDisplay = Display
        Me._timeValue = Value
    End Sub

    Public Property Display() As String
        Get
            Return Me._timeDisplay
        End Get
        Set(ByVal value As String)
            Me._timeDisplay = value
        End Set
    End Property

    Public Property Value() As String
        Get
            Return Me._timeValue
        End Get
        Set(ByVal value As String)
            Me._timeValue = value
        End Set
    End Property
End Class

Public Class Times : Inherits List(Of Time)
    Public Sub New()

    End Sub
End Class
Это было полезно?

Решение 2

Я могу добавить следующее System.ComponentModel.DataObject атрибут для class.Однако я не могу добавить System.ComponentModel.DataObjectMethod к моему Display/Value property.Когда я меняю их на Functions Я получаю следующую ошибку:

"Сбой разрешения перегрузки произошел из-за отсутствия доступного New() принимает это количество аргументов'

'This works
<System.ComponentModel.DataObject()> _
Public Class Time
    Private _timeValue As String
    Private _timeDisplay As String

    Public Sub New()

    End Sub

    Public Sub New(ByVal Value As String, ByVal Display As String)
        Me._timeDisplay = Display
        Me._timeValue = Value
    End Sub

    'This doesn't work
    <System.ComponentModel.DataObjectMethod()> _
    Public Function getDisplay() As String
        Return Me._timeDisplay
    End Function

    'This doesn't work
    <System.ComponentModel.DataObjectMethod()> _
    Public Function getValue() As String
        Return Me._timeValue
    End Function
End Class

Другие советы

Чтобы улучшить опыт работы с ObjectDataSource, рассмотрите возможность пометки ваших типов данных с помощью [DataObject].Кроме того, существует [DataObjectMethod] атрибут, определяющий возможные операции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top