Problemi con codice per nuovo file

di il
22 risposte

Problemi con codice per nuovo file

Salve ho un problema con il codice per creare un nuovo file.
il codice inserito in un pulsante è il seguente
 private void nuovo_ttbtn_Click(object sender, EventArgs e)
        {
            Close();

            string fileName;

            fileName = Application.StartupPath;

            System.Diagnostics.Process.Start("Verifica Plinto rettangolare.exe");
            
        }
Il codice funziona all'apertura del programma e dopo l'apertura di file che si trovano nella directory del programma, ma se vado ad aprire un file che si trova in altra dir il comando non funziona più (presumo perchè non è in grado di sapere dove si trova l'esecutivo avendo in memoria la posizione dell'ultimo file aperto).

Come posso risolvere il problema (e quindi che codice devo inserire) per poter aprire l'esecutivo in qualsiasi punto si trovi, senza specificare da codice una posizione fissa (dato che spostando il codice da pc ad altro potrei cambiare dir) ?

Grazie anticipate

22 Risposte

  • Re: Problemi con codice per nuovo file

    Prendi il percorso assoluto da un file o da un OpenFileDialog e apri il processo con il percorso assoluto

    https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.start?view=netframework-4.8
    https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.openfiledialog?view=netframework-4.8
  • Re: Problemi con codice per nuovo file

    Come potrei fare questa cosa, senza dover inserire un percorso assoluto, ho provato a leggere i riferimenti ma non sono riuscito ad ottenere la cosa voluta

    grazie
  • Re: Problemi con codice per nuovo file

    Se ci sono due eseguibili con lo stesso nome in cartelle diverse che fai?
  • Re: Problemi con codice per nuovo file

    In realtà avrei la necessità di cancellare tutti i dati presenti nelle varie datagrid, textbox, ecc, per poter realizzare una nuova istanza e salvare un nuovo file e la cosa più semplice mi era sembrata quella di creare un nuovo esecutivo richiamando il programma. Generalmente installo il programma in cartelle personalizzate, che spesso non sono presenti in altri pc, ma imponendo il percorso fisso la cosa non funzionerebbe in un altro computer. Vorrei indicazioni su come poter creare un file nuovo, qualsiasi suggerimento è per accetto
    grazie
  • Re: Problemi con codice per nuovo file

    Eseguibile ..
    Si chiama eseguibile non esecutivo ...

    E hai avuto la risposta... non ne esiste un'altra...
  • Re: Problemi con codice per nuovo file

    Ok grazie ma come fanno i programmi che non hanno bisogno di installazione a creare nuove istanze (nuovo file) dopo averne aperto uno?

    io vorrei fare proprio quello
  • Re: Problemi con codice per nuovo file

    Ma che vuol dire quello che hai scritto?

    Quando un programma viene eseguito, i dati sono ottenuti da un DB o da altra fonte. Che vuoi dire con "devo cancellare i datagrid e i controlli"?

    Non si riesce a capire il tuo problema, ammesso che ce ne sia uno ...
  • Re: Problemi con codice per nuovo file

    Vorrei capire come scrivere le istruzioni per creare un nuovo file.
    esempio apro un file esistente in un programma, poi senza dover chiudere e riaprire il programma vorrei cliccando su un pulsante crea nuovo file avere tutto azzerato per crere un nuovo file (quello che normalmente si trova in File -> Nuovo). Questo senza dover cancellare uno per uno tutti i dati (messi nelle textbox o datagrid o radiobutton) presenti su tutti le schede di cui è costituito il mio programma o comunque automattizzando la cosa (senza dover richiamare uno per uno es. textbox1.text = "" o textbox1.clear(), textbox2.Clear(), ....,textbox100.clear()).
    Spero di essere stato più chiaro ora
  • Re: Problemi con codice per nuovo file

    No, non sei chiaro perché non sai usare i termini correttamente e quindi non ci si può capire.

    "Creare un file" tramite un programma significa creare un file (ad esempio un file di testo) con le istruzioni inserire in un programma.

    Tu invece stai parlando (probabilmente) di un file sorgente (di codice) ma non ha alcun senso.

    Quando crei un form, non dovresti mettere nulla all'interno di eventuali textbox e dovresti riempirli con i dati che calcoli o leggi da un DB.

    Al posto di chiedere ancora con una terminologia che non consente di capirci, facci un esempio di quello che vorresti fare proprio con il tuo programma.
  • Re: Problemi con codice per nuovo file

    Esempio ho un programma che ha due textbox in una inserisco nome ed in una inserisco età, quindi dopo aver riempito le due textbox con il nome e l'età (es. pippo e 25 anni). salvo il file che sia chiama nome1.xml . Chiudo il programma, lo riapro avrò tutte e due le textbox vuote e scrivo un secondo nome ed età (es.mario e 30 anni). salvo il file che chiamerò nome2.xml. Chiudo il programma.
    il giorno seguente apro il programma e carico nome1.xml, nelle textbox vedrò "pippo" e "25", a questo punto voglio creare un nuovo file che chiamerò nome3.xml, ma non andando a modificare texbox1 e texbox2 dal file già aperto nome2.xml, ma partendo da 0 (nuovo file come se il programma fosse stato chiuso e riaperto con tutte e due le textbox vuote come al riavvio del programma) cliccando su un pulsante "nuovo file". Quale è il codice che devo inserire in questo pulsante per avere ciò che è indicato sopra?
    Con questo codice
    private void nuovo_ttbtn_Click(object sender, EventArgs e)
            {
                Close();
    
                string fileName;
    
                fileName = Application.StartupPath;
    
                System.Diagnostics.Process.Start("Verifica Plinto rettangolare.exe");
                
            }

    se apro un file che si trova nella cartella del programma ottengo quello che voglio, ma se si trova in una cartella diversa da quella in cui si trova l'esecutivo, e poi clicco sul pulsante che io ho chiamato "nuovo" non funziona.
    Come posso fare senza inserire un riferimento fisso per l'apertura del file a fare quello detto sopra?
  • Re: Problemi con codice per nuovo file

    ESEGUIBILE ... non esecutivo ... usa i termini corretti.

    Il codice che hai scritto esegue un nuovo programma e non ha alcun senso.

    Per rimanere con l'esempio che hai fatto, puoi cancellare il contenuto dei controlli prima di inserire nuovi valori. Per i textbox lo fai con una for
    
                foreach (TextBox t in Controls.OfType<TextBox>())
                      t.Text = "";
    
  • Re: Problemi con codice per nuovo file

    Ok grazie ma il problema è legato al fatto che il programma non è così semplice, i textbox sono molti e spesso annidati in pannelli, inoltre sono impostati dei dati che non vorrei cancellare e specialmente per presenza di radiobutton e checkbox preimpostati che vorrei mantenere così come impostati di base all'apertura di una nuova istanza (apertura del programma), e con il comando da te indicato andrei a cancellare tutto indistintamente, per questo avevo pensato ad una nuova istanza che mi riapriva il programma da 0 come preimpostato, facendo un po prima che richiamando tutto uno a uno.
  • Re: Problemi con codice per nuovo file

    Il ciclo cancella "solo" i textbox non gli altri controlli.
    Per i textbox nei pannelli si può rimediare complicando di poco il codice.

    *Comunque*

    se hai un menu da cui puoi lanciare la tua form (che ad esempio si chiama Form2) puoi scrivere
    
                Form2 f = new Form2();
                f.Show();
    
    per avere quello che vuoi. Nella Form2 inserirai un button che provveda a salvare i dati e ad eseguire una Close();
  • Re: Problemi con codice per nuovo file

    Nel caso in cui i textbox sono in un panel come potrei fare?
Devi accedere o registrarti per scrivere nel forum
22 risposte