Страница: 1 |
Страница: 1 |
Вопрос: CType(expression, typename) - ошибка...
Добавлено: 16.08.11 23:43
Автор вопроса: DimBi
Помогите разобраться...
Не удается получить свойства выделенного объекта в ListBox....
При выполнении процедуры
Private Sub GetPropertyObj(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBoxDemo.DoubleClick
Dim str As String
str = CType(ListBoxDemo.SelectedItem, Person).Name
MessageBox.Show(str)
End Sub
генерируется исключение:
--------------------------------------------------
вот весь код...
Public Class Person
Private _name As String
Private _ssn As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Property SSN() As String
Get
Return _ssn
End Get
Set(ByVal value As String)
_ssn = value
End Set
End Property
Public Overloads Function ToString() As String
Return String.Format("{0} : {1}", SSN, Name)
End Function
End Class
Public Class Form1
Private Sub BtnPopulateList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPopulateList.Click
Dim P As Person
Dim i As Integer
For i = 0 To 19
P = New Person()
P.Name = "Имя: " & i
P.SSN = "999-55-00" & i.ToString("00")
If ListBoxDemo.FindStringExact(P.ToString) = -1 Then
ListBoxDemo.Items.Add(P.ToString)
Else
MessageBox.Show(String.Format("Элемент {0} уже существует!", P.ToString))
End If
Next
End Sub
Private Sub GetPropertyObj(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBoxDemo.DoubleClick
Dim str As String
str = CType(ListBoxDemo.SelectedItem, Person).Name 'здесь генерируется ошибка
MessageBox.Show(str)
End Sub
End Class
Где ошибка???
Help me, please!!!
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Ким Чен Ир
Вопросов: 0
Ответов: 140
Профиль | | #1
Добавлено: 17.08.11 00:13
Формально: имеется преобразование из класса Person в тип String, но нет обратного преобразования.
Кароче.. ты в ListBoxDemo подсовываешь просто строку, а потом пытаешься из строки воссоздать объект. Подумай.
Номер ответа: 2
Автор ответа:
DimBi
Вопросов: 15
Ответов: 55
Профиль | | #2
Добавлено: 17.08.11 01:20
Если подсовываю объект:
то ошибка не возникает...
только в ListBoxDemo выводятся не строковые данные, а тип объекта...
Номер ответа: 3
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #3
Добавлено: 17.08.11 01:26
именно это и надо делать
+ надо установить свойство DisplayMember в Name чтоб отображался не тип данных а нужное тебе значение
Номер ответа: 4
Автор ответа:
DimBi
Вопросов: 15
Ответов: 55
Профиль | | #4
Добавлено: 17.08.11 01:45
не получается...
или
всё одно...
где ошибка, не пойму...
Номер ответа: 5
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #5
Добавлено: 17.08.11 09:44
Номер ответа: 6
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #6
Добавлено: 17.08.11 11:52
ListBoxDemo.DisplayMember = "Name"
Надеюсь, ты понимаешь что эту строку тебе надо вынести ЗА цикл? Лучше всего в Load формы..
Номер ответа: 7
Автор ответа:
DimBi
Вопросов: 15
Ответов: 55
Профиль | | #7
Добавлено: 17.08.11 12:23
Спасибо за помощь!!!
разобрался...
переделал так:
Теперь всё работает как надо!