C# Passaggio variabile

-Pippo-

Utente Bronze
10 Ottobre 2018
2
1
1
20
Ultima modifica da un moderatore:
Ciao, sono nuovo nella programmazione e proprio non riesco a capire come fare in modo che un'array venga letta in tutto il programma:

L'array in questione è un'array di una classe...

Codice:
public class Program
    {
        public static void Main()
        {
                 Application.Run(new Form1());
        }
    }

public class clienteClass
    {
        public string codice;
        public string nome ;
        public string indirizzo;
        public string città;
        public string cap;
        public string provincia;
        public string cf;
     }

    public class FornitoreClass
    {
        string Fnome;
        string Findirizzo;
        string Fcittà;
        string Fcell;
        string Femail;
        string Fpiva;
      
        public string nome
        {
            get { return Fnome; }
            set { Fnome = value; }
        }
        public string indirizzo
        {
            get { return Findirizzo; }
            set { Findirizzo = value; }
        }
        public string città
        {
            get { return Fcittà; }
            set { Fcittà = value; }
        }
        public string cell
        {
            get { return Fcell; }
            set { Fcell = value; }
        }
        public string email
        {
            get { return Femail; }
            set { Femail = value; }
        }
        public string piva
        {
            get { return Fpiva; }
            set { Fpiva = value; }
        }
    }

  public Form1()
        {
            InitializeComponent();
            int numclienti = 50;

            // Crea l'Array dei clienti
            clientiClass Cliente = new clienteClass();
            clientiClass[] Clienti = new clienteClass[numclienti];
            for (i = 0; i < numclienti; i++)
            {
                Cliente = new clienteClass();
            }
       }

Nel form (form1) ho una combobox in cui inserisco tutti i nomi dei clienti e vorrei creare un evento che quando viene aggiornato il testo della combobox mi inserisca su una textbox la partita iva associata a tale nome.

Più o meno dovrebbe essere come segue, in realtà non riesco ad accedere all'array con i dati.

Codice:
private void comboBox2_TextUpdate( object sender, EventArgs e)
           
        // Copia la partita fornitore sulla textbox2
        {
           for (i=0;i<50;i++)
           {
                 if (clienti.nome=this.combobox2.text)
                       this.textbox2.text=clienti.piva
           }     
        }

Ho provato a fare le classi nei 2 modi indicati all'inizio del codice.
 
  • Mi piace
Reazioni: CrashTest
Ultima modifica:
Ciao, sono nuovo nella programmazione e proprio non riesco a capire come fare in modo che un'array venga letta in tutto il programma:

L'array in questione è un'array di una classe...

public class Program
{
public static void Main()
{
Application.Run(new Form1());
}
}


public class clienteClass
{
public string codice;
public string nome ;
public string indirizzo;
public string città;
public string cap;
public string provincia;
public string cf;
}


public class FornitoreClass
{
string Fnome;
string Findirizzo;
string Fcittà;
string Fcell;
string Femail;
string Fpiva;

public string nome
{
get { return Fnome; }
set { Fnome = value; }
}
public string indirizzo
{
get { return Findirizzo; }
set { Findirizzo = value; }
}
public string città
{
get { return Fcittà; }
set { Fcittà = value; }
}
public string cell
{
get { return Fcell; }
set { Fcell = value; }
}
public string email
{
get { return Femail; }
set { Femail = value; }
}
public string piva
{
get { return Fpiva; }
set { Fpiva = value; }
}
}


public Form1()
{
InitializeComponent();
int numclienti = 50;


// Crea l'Array dei clienti
clientiClass Cliente = new clienteClass();
clientiClass[] Clienti = new clienteClass[numclienti];
for (i = 0; i < numclienti; i++)
{
Cliente = new clienteClass();
}
}


Nel form (form1) ho una combobox in cui inserisco tutti i nomi dei clienti e vorrei creare un evento che quando viene aggiornato il testo della combobox mi inserisca su una textbox la partita iva associata a tale nome.

Più o meno dovrebbe essere come segue, in realtà non riesco ad accedere all'array con i dati.


private void comboBox2_TextUpdate( object sender, EventArgs e)

// Copia la partita fornitore sulla textbox2
{
for (i=0;i<50;i++)
{
if (clienti.nome=this.combobox2.text)
this.textbox2.text=clienti.piva
}
}


Ho provato a fare le classi nei 2 modi indicati all'inizio del codice.
Ciao, è un po difficile da leggere così... perchè non usi il blocco codice anzichè mettere un font così piccolo alle parti c#? :)
Comunque...

Nelle due classi di modello (Cliente & Fornitore) stai usando dei getter e setter alquanti inutili per come scritti, visto che le property dichiarate sono già private - a meno che tu specifichi sono pubbliche - e quindi puoi semplicemente scrivere le stesse classi in tale maniera (anche per una questione di accesso ad esse da classi esterne):
C#:
public class Cliente
{
    public string codice { get; set; }
    public string nome { get; set; }
    public string indirizzo { get; set; }
    public string città { get; set; }
    public string cap { get; set; }
    public string provincia { get; set; }
    public string cf { get; set; }
}
C#:
public class Fornitore
{
    public string Fnome { get; set; }
    public string Findirizzo { get; set; }
    public string Fcittà { get; set; }
    public string Fcell { get; set; }
    public string Femail { get; set; }
    public string Fpiva { get; set; }
}


Per quanto riguarda l'accessibilità della variabile, devi dichiararla globale a livello di classe e non annidata in un metodo, praticamente così:
C#:
public class Form1
{
    private Cliente[] clienti;
   
    public Form1()
    {
        InitializeComponent();
        int numClienti = 50;
       
        this.clienti = new Cliente[numClienti];
    }
}


Inoltre, nel ciclo for che hai messo, non stai popolando l'array... bensì stai riassegnando il valore della variabile Cliente ad ogni giro del ciclo!
Solitamente si popola un array - tramite ciclo for - in questo modo:
C#:
for(int i = 0; i < numClienti; i++)
{
    clienti[i] = new Cliente();
}


Infine dalla tua ComboBox dovrai riconoscere l'elemento selezionato, identificarlo nell'array e recuperarne la P. Iva...
Spero di esserti stato utile :)
 
Ciao, è un po difficile da leggere così... perchè non usi il blocco codice anzichè mettere un font così piccolo alle parti c#? :)
Comunque...

Nelle due classi di modello (Cliente & Fornitore) stai usando dei getter e setter alquanti inutili per come scritti, visto che le property dichiarate sono già pubbliche - a meno che tu specifichi sono private - e quindi puoi semplicemente scrivere le stesse classi in tale maniera:
C#:
public class Cliente
{
    public string codice { get; set; }
    public string nome { get; set; }
    public string indirizzo { get; set; }
    public string città { get; set; }
    public string cap { get; set; }
    public string provincia { get; set; }
    public string cf { get; set; }
}
C#:
public class Fornitore
{
    public string Fnome { get; set; }
    public string Findirizzo { get; set; }
    public string Fcittà { get; set; }
    public string Fcell { get; set; }
    public string Femail { get; set; }
    public string Fpiva { get; set; }
}


Per quanto riguarda l'accessibilità della variabile, devi dichiararla globale a livello di classe e non annidata in un metodo, praticamente così:
C#:
public class Form1
{
    private Cliente[] clienti;
   
    public Form1()
    {
        InitializeComponent();
        int numClienti = 50;
       
        this.clienti = new Cliente[numClienti];
    }
}


Inoltre, nel ciclo for che hai messo, non stai popolando l'array... bensì stai riassegnando il valore della variabile Cliente ad ogni giro del ciclo!
Solitamente si popola un array - tramite ciclo for - in questo modo:
C#:
for(int i = 0; i < numClienti; i++)
{
    clienti[i] = new Cliente();
}


Infine dalla tua ComboBox dovrai riconoscere l'elemento selezionato, identificarlo nell'array e recuperarne la P. Iva...
Spero di esserti stato utile :)

Grazie Mille, funziona :)