Источник данных .NET Designtime (для Combobox)
-
21-08-2019 - |
Вопрос
я пытаюсь создать ObjectDataSource, который я могу использовать для привязки к BindingSource, который, в свою очередь, должен быть привязан к ComboBox.
Я создал простой класс и простой список для этого класса (см. Ниже).
- Класс Times list не отображается в моем наборе инструментов, поэтому я не могу перетащить его в форму, чтобы я мог выбрать его в качестве источника данных для bindingsource.
- Второй вариант - создать новый источник данных проекта (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]
атрибут, определяющий возможные операции.