Come chiamare un modulo quando ci sono 3 moduli in un progetto e trasferimento dati tra i moduli in C #?

StackOverflow https://stackoverflow.com/questions/1012631

  •  06-07-2019
  •  | 
  •  

Domanda

Ho 3 moduli nel mio progetto form1, form2, form3 e funzionava senza problemi ora ne ho aggiunto un altro nel mio progetto form4. I primi tre moduli sono già collegati tramite ShowDialog ().

Non voglio toccare il file Program.cs.

Come posso chiamare prima il modulo 4 come modulo di avvio? Il modulo 1 precedente era il primo modulo ad apparire nel mio progetto.

Inoltre ho 2 pulsanti di opzione nel mio form1 rdb1 e rdb2. Nel mio form2 ho openFileDialog collegato a un pulsante Seleziona. Ora voglio quando l'utente seleziona rdb1 in form1, quindi il filtro di openFileDialog in form2 dovrebbe aprire i file con solo " .XML " come estensione e quando rdb2 è selezionato in Form1, solo in Form2 ".TXT" i file possono essere aperti.

Non sono impossibile trovare la sintassi per questo in intellisense, per favore, puoi aiutarmi?

Grazie in anticipo ..

È stato utile?

Soluzione

Puoi spiegare perché non vuoi toccare il tuo file Program.cs? Questo è esattamente il punto in cui cambi il modulo di avvio.

Cambia il:

Application.Run(new Form1());

a:

Application.Run(new Form4());

In secondo luogo, è possibile impostare i filtri su Open- e SaveFileDialog utilizzando la proprietà Filter. Impostalo su un valore come questo:

XML Files|*.xml

O per il testo:

Text Files|*.txt

Modificato per aggiungere:

Per farlo da un altro modulo:

class Form1 {
  Form2 form2;

  void Form1_Load(object sender, EventArgs e) {
    form2 = new Form2();
  }

  void rdb1_CheckedChanged(object sender, EventArgs e) {
    if (rdb1.Checked) 
      form2.openFileDialog1.Filter = "XML Files|*.xml";
    else
      form2.openFileDialog1.Filter = "Text Files|*.txt";
  }
}

Assicurati di aver impostato la proprietà Modificatori di openFileDialog1 sulla finestra di progettazione Form2 su " Public " o " Interno " per consentire l'accesso ad esso dall'esterno della classe stessa.

Altri suggerimenti

Devi toccare program.cs. È qui che viene creato ed eseguito il modulo iniziale.

Crea un nuovo progetto winforms e apri program.cs. Puoi vedere dove viene chiamato Application.Run con un'istanza del modulo di avvio. Questo è quello che devi fare.

Non aver paura. Andrà tutto bene.


In risposta al commento:

L'evento Form1_Load viene generato in Form1 da Form1. È necessario tornare indietro nella catena di chiamate e trovare dove Form1 è istanziato e passato a Application.Run. E questo è in program.cs.

Fallo. E poi vai a prendere una copia di CLR Via C #. Non te ne pentirai (purché salti i primi due capitoli di coppia!)

  

Come posso chiamare prima il modulo 4 come modulo di avvio?

     

Non voglio toccare il file Program.cs.

Perché non vuoi toccare Program.cs? L'istanza del modulo passata ad Application.Run (..) determina il modulo di avvio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top