Toon posts:

[C#] Form instances opslaan in CollectionBase

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik wil alle instances van een Form opslaan in een CollectionBase, zodat ik ze allemaal in 1 keer kan Disposen door de CollectionBase te doorlopen.. Nu heb ik de volgende class:

code:
1
2
3
4
5
6
7
8
9
10
11
12
    public class ClassFormInstances : System.Collections.CollectionBase
    {
        public void Add (Form frm)
        {
            List.Add(frm);
        }

        public Form Get (int index)
        {
            return List[index];
        }
    }


de Add functie is geen probleem, maar bij de Get functie geeft de compiler als error over de return regel:
Cannot implicitly convert type 'object' to 'System.Windows.Forms.Form'.

Dat snap ik niet helemaal, want bij Add geef ik keurig aan dat het om een Form gaat, en een form Adden op deze manier: FormInstances.Add (new Form1()); geeft ook geen error.

Ziet iemand wat ik hier fout doe?

[ Voor 3% gewijzigd door Verwijderd op 28-03-2005 22:56 ]


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 08-05 22:38
de List.Add doet het Form-object frm automatisch typecasten naar een object van het type 'object'.

Alleen hij kan niet automatisch terug typecasten naar Form (er kan namelijk in principe elk type object in de collection komen te staan), daarom moet je dat expliciet doen.

return (Form) List[index]; zou dus wel moeten werken.

Verwijderd

Topicstarter
Thanks! Dat is 'm!

Wel raar trouwens..

  • whoami
  • Registratie: December 2000
  • Laatst online: 09-05 01:02
Niets raar, jij wilt een Form returnen (zie signature van je getter), en in de ArrayList wordt alles opgeslagen als 'object'.
Je returned dus een object ipv een Form, dus moet je dat 'object' nog eens expliciet casten naar een Form.

https://fgheysels.github.io/