Avatar billede Skynet Mester
25. maj 2008 - 13:35 Der er 6 kommentarer og
2 løsninger

problemer med casting?

Hej

jeg har et problem med casting,

Jeg har en listbox med strings, når man vælger en dato i boxen, bliver den overført til en anden text box
istBox7.Items.Add(listBox3_kalender.SelectedItem);

Detter er problem frit

Når man vælger en dato i den nye box, bliver DateTime dt den nye dato, detter er også problemfrit
dt = (DateTime)listBox7.SelectedItem;


Problemet er at der også kan komme datoer i listbox7 via denne funktion

public override string ToString()
        {
            return PropertyDato.ToShortDateString ();
        }

Når man klikker på en dato som stammer fra funktionen, stopper programmet med henvisning til castning, nogle forslag?
Avatar billede winners79 Nybegynder
25. maj 2008 - 13:46 #1
hvad med at checke på object typen før du caster?

kan for eksempel gøres med:

if (listbix7.SelectedItem is DateTime)
dt =  (DateTime)listBox7.SelectedItem;
else
dt = Convert.ToDateTime(listBox7.SelectedItem);
Avatar billede Skynet Mester
25. maj 2008 - 15:03 #2
super.. men dt = Convert.ToDateTime(listBox7.SelectedItem); giver mig følgende fejl meddelselse:

Et objekt af typen 'test.dyk' kan ikke konverteres til typen 'System.IConvertible'.

Det som den henviser til fra klassen er dette
public override string ToString()
        {
            return PropertyDato.ToShortDateString();
        }
Avatar billede arne_v Ekspert
25. maj 2008 - 15:23 #3
Den siger at listBox7 indeholder en test.dyk og ikke en string ...
Avatar billede Skynet Mester
25. maj 2008 - 16:16 #4
ok, så det er derfor..

jeg har i min  testklasse følgende, som returnerer Dyk type

public dyk[] GetAlldyk()
        {
            return Dykertursliste.ToArray();

        }

Men jeg har lavet en overide i dyk klassen
public override string ToString()
        {
            return PropertyDato.ToShortDateString ();
        }

Men det er ikke nok, jeg har også prøvet dette i selve hovedsiden
listBox7.Items.AddRange((DateTime)et_kursus.GetAlldyk());

Men virker ikke, kan ikke konverteres, nogle andre forslag til castning?
Avatar billede Skynet Mester
25. maj 2008 - 19:50 #5
Jeg har nu prøvet at gøre det på samme måde, som hvor den har virket med cast og har i klassen castet listen dyk
public dyk[] GetAlldyk()
        {
         
            return dyk.Cast<object>().ToArray();

        }

Men får denne fejlmeddelelse
Error    9    Cannot implicitly convert type 'object[]' to 'test.dyk[]'. An explicit conversion exists (are you missing a cast?)
Avatar billede Skynet Mester
25. maj 2008 - 23:30 #6
denne kode har løst det
dt = DateTime.Parse(listBox7.SelectedItem.ToString());

Men giver points til Jer begge for at hjælpe mig med at finde fejlen..
Avatar billede winners79 Nybegynder
26. maj 2008 - 12:25 #7
:)
Avatar billede arne_v Ekspert
27. maj 2008 - 04:55 #8
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester