Invalid cast exception

Posted by user127147 on Stack Overflow See other posts from Stack Overflow or by user127147
Published on 2010-04-27T20:42:08Z Indexed on 2010/04/27 23:03 UTC
Read the original article Hit count: 295

Filed under:
|

I have a simple application to store address details and edit them. I have been away from VB for a few years now and need to refreash my knowledge while working to a tight deadline. I have a general Sub responsible for displaying a form where user can add contact details (by pressing button add) and edit them (by pressing button edit). This sub is stored in a class Contact. The way it is supposed to work is that there is a list with all the contacts and when new contact is added a new entry is displayed. If user wants to edit given entry he or she selects it and presses edit button

Public Sub Display()
    Dim C As New Contact
    C.Cont = InputBox("Enter a title for this contact.")
    C.Fname = frmAddCont.txtFName.Text
    C.Surname = frmAddCont.txtSName.Text
    C.Address = frmAddCont.txtAddress.Text
    frmStart.lstContact.Items.Add(C.Cont.ToString)
End Sub

I call it from the form responsible for adding new contacts by

Dim C As New Contact
C.Display()

and it works just fine. However when I try to do something similar using the edit button I get errors - "Unable to cast object of type 'System.String' to type 'AddressBook.Contact'."

Dim C As Contact
If lstContact.SelectedItem IsNot Nothing Then
    C = lstContact.SelectedItem()
    C.Display()
End If

I think it may be something simple however I wasn't able to fix it and given short time I have I decided to ask for help here.

I have updated my class with advice from other members and here is the final version (there are some problems however). When I click on the edit button it displays only the input box for the title of the contact and actually adds another entry in the list with previous data for first name, second name etc.

Public Class Contact 
        Public Contact As String 
        Public Fname As String 
        Public Surname As String 
        Public Address As String 
        Private myCont As String 
        Public Property Cont() 
            Get 
                Return myCont 
            End Get 
            Set(ByVal value) 
                myCont = Value 
            End Set 
        End Property 
        Public Overrides Function ToString() As String 
            Return Me.Cont 
        End Function 
        Sub NewContact() 
            FName = frmAddCont.txtFName.ToString 
            frmStart.lstContact.Items.Add(FName) 
            frmAddCont.Hide() 
        End Sub 
        Public Sub Display() 
            Dim C As New Contact 
            C.Cont = InputBox("Enter a title for this contact.") 
            C.Fname = frmAddCont.txtFName.Text 
            C.Surname = frmAddCont.txtSName.Text 
            C.Address = frmAddCont.txtAddress.Text 
            'frmStart.lstContact.Items.Add(C.Cont.ToString) 
            frmStart.lstContact.Items.Add(C)     

        End Sub 
End Class 

© Stack Overflow or respective owner

Related posts about vb.net

Related posts about casting