Avatar billede mcnovy Nybegynder
21. maj 2006 - 19:40 Der er 10 kommentarer og
1 løsning

ArrayList som kan tilgåes fra flere forskellige forms og controls

Hej

jeg har en ArrayList

jeg har en Class som gemmer den liste (som det eneste)

et sample:

class ArrListe
{
ArrayList GemListe;
Public Init()
{
  GemListe = new ArrayList();
}
}


kunne (og er indtil videre) således.
problemet jeg har er så at jeg så f.eks fra mainform gør følgende.

class Mainform
{
ArrListe AL;
ShowListe SL = new ShowListe();
public Mainform
{
  AL = new ArrListe();
  AL.Init();
  AL.GemListe.Add("Test");
  SL.Vis();
}
}
class ShowListe
{
ArrListe AL = ArrListe();
public void Vis()
{
  txtLable.text = AL.GemListe[0];
}
}



men når ShowListe "loades" så sletter den indholdet af GemListe


er der nogle der kan en løsning.. eller et eks. på hvad man normalt ville gøre..?

(undksyld hvis det er lidt forvirrende med navnene.. men var lige hvad jeg fandt på mens jeg skrev :) )
Avatar billede mcnovy Nybegynder
21. maj 2006 - 20:21 #1
er der ikke en måde man hvorpå man kan have en klasse eller andet, der hele tiden er åben, og som kan indeholde et array, som ikke bliver slettet når man opretter forbindelse til klassen..?
Avatar billede sovsekoder Nybegynder
21. maj 2006 - 21:35 #2
her kan du brug et singleton pattern. På denne måde er du sikker på at der altid er max 1 insans af din "ArrListe" klasse.
Avatar billede nielle Nybegynder
21. maj 2006 - 21:35 #3
Du kan f.eks. erklære din indre variabel dom static:

class ArrListe
{
    static ArrayList GemListe;
    Public Init()
    {
        GemListe = new ArrayList();
    }
}
Avatar billede nielle Nybegynder
21. maj 2006 - 21:36 #4
Med static, skal du så kalde via klasse-navnet i stedet for variablens navn:

class Mainform
{
    ArrListe AL;
    ShowListe SL = new ShowListe();
    public Mainform
    {
        AL = new ArrListe();
        ArrListe.Init();
        ArrListe.GemListe.Add("Test");
        SL.Vis();
    }
}
Avatar billede sovsekoder Nybegynder
21. maj 2006 - 21:37 #5
din ArrListe vil se således ud:
class ArrListe
  {
    private ArrayList GemListe;

    private static Singleton instance;


    // Note: Constructor is 'protected'
    protected Singleton()
    {
      GemListe = new ArrayList();
    }

    public static Singleton Instance()
    {
      // Use 'Lazy initialization'
      if (instance == null)
      {
        instance = new Singleton();
      }

      return instance;
    }



  }
Avatar billede sovsekoder Nybegynder
21. maj 2006 - 21:39 #6
når du så skal bruge ArrListe instansen skriver du:
ArrList AL = ArrListe.Instance() istedet for ArrListe  AL = new ArrListe();

see evt. denne side for en beskrivelse af singleton pattern:
http://www.dofactory.com/Patterns/PatternSingleton.aspx

bemærk at denne version er ikke trådsikker.
Avatar billede nielle Nybegynder
21. maj 2006 - 21:42 #7
Du kan ogsåe modificere din ShowListe-kode, sådan at den fpr AL med når den oprettes:

class Mainform
{
    ArrListe AL = new ArrListe();
    ShowListe SL = new ShowListe(AL);

    public Mainform
    {
        AL.Init();
        AL.GemListe.Add("Test");
        SL.Vis();
    }
}

class ShowListe
{
    ArrListe AL = null;

    public ShowListe(ArrListe AL)
    {
        this.AL = AL;
    }

    public void Vis()
    {
        txtLable.text = AL.GemListe[0];
    }
}
Avatar billede mcnovy Nybegynder
21. maj 2006 - 22:05 #8
indtil videre takker jeg for svarene.!

kigger dog først på det imorgen aften..
så håber i er der hvis jeg får brug for hjælp :)
Avatar billede mcnovy Nybegynder
22. maj 2006 - 20:41 #9
nielle

det ser ud til at din kode virker (indtil videre) :)

sovsekoder: jeg har ikke prøvet din kode, men skal vi forhandle en "pris" :)
150 nielle: 50 sovsekoder.?
eller 200 til hver.. så opretter jeg bare en point til sovsekoder..!

det i evt synes er fair..!
og så husk lige at smide svar :)

takker for hjælpen
Avatar billede sovsekoder Nybegynder
22. maj 2006 - 22:09 #10
behøver ikke point ;) - god fornøjelse
Avatar billede nielle Nybegynder
22. maj 2006 - 23:25 #11
Svar :^)
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