Oppure

Loading
06/03/17 11:09
fosforo
Ciao
Vorrei passare i valori di un Array dalla form principale a una classe:

l'array è il seguente
string[,] Mieidati = new string [10, 3];


Cosa devo inserire nella classe per leggere i dati dell'Array Mieidati?


Grazie in anticipo
Ultima modifica effettuata da fosforo 06/03/17 13:20
aaa
07/03/17 7:58
Thejuster
Non sò se ho capito bene ma.

semplicemente basta assegnare all'altro array quello che stai usando


Classe1.MieiDati = Form1.MieiDati;


class Form1
{
 
 Prova p = new Prova();
 string[,] mieiDati;

  void prova()
  {
      mieiDati = new string[10,3];
     p.mieiDati = mieiDati;
  }

}


class Prova
{

 public string[,] mieiDati;

}

mire.forumfree.it/ - Mire Engine
C# UI Designer
08/03/17 8:51
fosforo
Grazie Thejuster per la risposta.

Purtroppo avevo dimenticato una parte.

L'array è bidimesionale:
string[,] mieidata = new string[3, 3];

La form che deve leggere i dati è in una classe esterna.
Mi da errore dicendomi che l'Array non esiste nel contesto corrente.


Ultima modifica effettuata da fosforo 08/03/17 9:27
aaa
08/03/17 9:59
Thejuster
Io ho provato mi funziona regolarmente.
Puoi mostrare sia la parte interessata nel form che della classe?
mire.forumfree.it/ - Mire Engine
C# UI Designer
08/03/17 11:48
fosforo
Nella Form Principale:

string[,] MyFiledata = new string[3, 3]; 
               
                int X = 0;  //Array Mydata for name e data creation and file path
                foreach (FileInfo file in d.GetFiles("*.txt", SearchOption.AllDirectories))
                {
                    //MessageBox.Show(file.Name);
                    MyFiledata[X, 0] = (file.Name);
                    MyFiledata[X, 1] = (file.CreationTime.ToString());
                    MyFiledata[X, 1] = (file.Directory.ToString());
                
                    X = X + 1;
                }
FileController FF = new FileController(X );






Nella classe esterna:

public class FileController
    {
        public FileController(int x )
        {
            MessageBox.Show(MyFiledata [1,1]);           
        }
    }
Ultima modifica effettuata da Thejuster 08/03/17 15:25
aaa
08/03/17 13:53
fosforo
Forse ho trovato.
Bisognerebbe utilizzare; out string [,] MyFiledata
aaa
08/03/17 15:35
Thejuster
Al contrario.
prova con ref.



public class FileController
    {
        public FileController(ref string[,] MyFiledata)
        {
            MessageBox.Show(MyFiledata [1,1]);          
        }
   }







FileController FF = new FileController(ref MyFiledata);



dovrebbe andare sicuramente
out restituisce il valore di una funzione in una variabile di destinazione
mentre ref prende come riferimento una variabile per la manipolazione
ed ovviamente qualsiasi cosa viene fatta dall'altra classe, la riporta con i cambiamenti
effettuati al Form1


EDIT:

ecco l'esempio vivente

rextester.com/…
Ultima modifica effettuata da Thejuster 08/03/17 15:48
mire.forumfree.it/ - Mire Engine
C# UI Designer
09/03/17 16:44
fosforo
Funziona.

GRZ
aaa