Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - c# chiamare una funzione da altro file
Forum - C# / VB.NET - c# chiamare una funzione da altro file

Avatar
fedino (Normal User)
Newbie


Messaggi: 4
Iscritto: 15/03/2019

Segnala al moderatore
Postato alle 17:39
Venerdì, 15/03/2019
Problema chiamare da file "Form1.cs" una "public void salvaFile()" che si trova in altro file.
Nel Form1 ho un pulsante per salvare in un file un array che si trova in altro file "public class crea lista".
Entrambi i file fanno parte dello stesso programma (namespace).

Codice sorgente - presumibilmente C++

  1. public partial class Form1
  2. .
  3. .
  4. .
  5. private void Salva_Click(object sender, EventArgs e)
  6.         {
  7.             lista.SalvaSuFile();      Non funziona !!!!!          
  8.         }
  9.  
  10.  
  11.  
  12. public class crea lista
  13. .
  14. .
  15. .
  16. public void SalvaSuFile()
  17.         {
  18.             if (VariabiliGlobali.ScriviFile == true)
  19.             {
  20.                 // cancella testo nel file
  21.                 FileStream filePT1 = new FileStream(@"e:/PercorsoTreno_1.txt", FileMode.Truncate);
  22.                 filePT1.Close();
  23.  
  24.                 // scrive nel file
  25.                 using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"e:/PercorsoTreno_1.txt", true))
  26.                 {
  27.                     foreach (string item in pannello)
  28.                     {
  29.                         file.WriteLine(item);  // aggiunge linea di testo
  30.                     }
  31.                 }
  32.                 VariabiliGlobali.ScriviFile = false;



Grazie per la collaborazione


Ultima modifica effettuata da Thejuster il 17/03/2019 alle 12:56
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6378
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:06
Venerdì, 15/03/2019
Ma cosa è crea lista??

Non si capisce molto dell'organizzazione delle classi del tuo programma.

Hai due form?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
fedino (Normal User)
Newbie


Messaggi: 4
Iscritto: 15/03/2019

Segnala al moderatore
Postato alle 22:35
Venerdì, 15/03/2019
Non ci sono due form.
"public class crealista" è una public class che genera una lista all'interno di un ArrayList.
In effetti ho scritto male correzione:

Codice sorgente - presumibilmente C++

  1. public partial class Form1
  2. .
  3. .
  4. .
  5. private void Salva_Click(object sender, EventArgs e)
  6.         {
  7.             crealista.SalvaSuFile();      // Non funziona !!!!! da quì vorrei attivare "public void SalvaSuFile()"
  8.          
  9.         }
  10.  
  11.  
  12.  
  13. public class crealista
  14. .
  15. .
  16. .
  17. public void SalvaSuFile()
  18.         {
  19.             if (VariabiliGlobali.ScriviFile == true)
  20.             {
  21.                 // cancella testo nel file
  22.                 FileStream filePT1 = new FileStream(@"e:/PercorsoTreno_1.txt", FileMode.Truncate);
  23.                 filePT1.Close();
  24.  
  25.                 // scrive nel file
  26.                 using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"e:/PercorsoTreno_1.txt", true))
  27.                 {
  28.                     foreach (string item in pannello)
  29.                     {
  30.                         file.WriteLine(item);  // aggiunge linea di testo
  31.                     }
  32.                 }
  33.                 VariabiliGlobali.ScriviFile = false;



Ultima modifica effettuata da Thejuster il 17/03/2019 alle 12:56
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6378
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:56
Venerdì, 15/03/2019
Non hai creato un oggetto di tipo crealista (nome comunque sbagliato per una classe) quindi non puoi usarne i metodi.

Non si capisce poi perché la classe gestisca in quel modo "variabili globali", cosa che ha poco senso in una classe (almeno im quel modo).

In realtà mi sa che il tuo codice è stato pensato poco oo.

Ti consiglio di lasciar perdere un attimo il codice e spiegarci cosa vorresti fare.

E ti consiglio anche di dedicare un po' di tempo ad un libro sulla OOP

Ultima modifica effettuata da nessuno il 15/03/2019 alle 22:57


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
fedino (Normal User)
Newbie


Messaggi: 4
Iscritto: 15/03/2019

Segnala al moderatore
Postato alle 18:09
Sabato, 16/03/2019
Risolto con un banale "canvas"

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6378
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:45
Sabato, 16/03/2019
La spiegazione di come hai risolto è peggiore dell'esposizione del problema ma me ne farò una ragione.

Resto convinto che tu non abbia usato correttamente la OOP.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2296
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 13:00
Domenica, 17/03/2019
Testo quotato

Postato originariamente da nessuno:

La spiegazione di come hai risolto è peggiore dell'esposizione del problema ma me ne farò una ragione.

Resto convinto che tu non abbia usato correttamente la OOP.



Aggiungo anche non hai istanziato la classe

E un errore madornale aggiungere un controllo al Form perché contenga la funzione Salva su file.
Ti ha funzionato solo perché semplicemente aggiungendo il controlla al form la classe è già istanziata.

cmq ti bastava semplicemente fare al click.

Codice sorgente - presumibilmente C# / VB.NET

  1. crealista crea = new crealista();
  2.  
  3. crea.SalvaSuFile();



https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote