Pergunta

Eu estou tentando criar um ObjectDataSource que eu posso usar para vincular a um BindingSource, que por sua vez deve ser ligado a uma caixa de combinação.

Eu criei uma classe simples e uma lista simples para esta classe (veja abaixo)

  1. A classe lista do Times não está aparecendo na minha caixa de ferramentas, por isso não pode arrastá-lo para a forma para que eu possa selecioná-la como fonte de dados para um BindingSource.
  2. A segunda opção é criar uma nova fonte de dados do projeto (ObjectDataSource). Aqui é convidado a 'selecionar o objeto de seu desejo de se ligar ao'. Eu adicionei a / variável amigo pública / privada para Form1 que instancia a classe Times. No entanto, esta variável não mostra. O único objeto que aparece na minha namespace projeto é Form1.

O que eu estou ausente?

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
Foi útil?

Solução 2

Posso adicionar o atributo System.ComponentModel.DataObject ao class. No entanto eu não posso adicionar um System.ComponentModel.DataObjectMethod ao meu Display/Value property. Quando eu mudá-los para Functions eu recebo o seguinte erro:

'Resolução de sobrecarga falhou porque não New() acessível aceita este número de argumentos'

'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

Outras dicas

Para melhorar a experiência com ObjectDataSource, considere marcando seus tipos de dados com [DataObject]. Além disso, há um atributo [DataObjectMethod] que define as operações possíveis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top