Страница: 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
       
    
       
  
Спасибо за помощь!!!
 
    
разобрался...
переделал так:
Теперь всё работает как надо!