Come chiamare un modulo quando ci sono 3 moduli in un progetto e trasferimento dati tra i moduli in C #?
-
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 ..
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.