salve.
Avrei bisogno di un consiglio.
Sto sviluppando una windows form application.
Vorrei capire se sto procedendo in modo sporco, oppure può andar bene questo approccio?
MEttiamo caso che abbiamo una schermata principale con un pannello.
All'interno di questo pannello posso richiamare diversi UserControl.
Gli User Control non sono altro che schermate diverse del programma, talvolta richiamate sequenzialmente.
Mettiamo caso che le mie varie schermate sono:
Form principale che contiene un pannello "MainPanel"
schermata di login (User control "Login")
schermata 1 (UserControl1)
schermata 2 (UserControl2)
schermata 3 (UserControl3).
Quello che deve accadere è:
appena avvio il programma, in automatico chiama la schermata di Login, in questo modo (classe del form principale):
Al click del Button per eseguire il Login, va nella schermata 1 (classe dello UserControl Login.cs)codice:public Tool() { InitializeComponent(); MainPanel.Controls.Add(Global.Login = new Login()); }
Appena va nella schermata dello UserControl1, attraverso 2 radiobutton e un Button può decidere se lanciare lo UserControl2 o lo UserControl3 (classe dello UserControl1.cs)codice:private void btnLogin_Click(object sender, EventArgs e) { if(loginOk) { Control[] controlCollection = Parent.Parent.Controls.Find("MainPanel", true); controlCollection[0].Controls.Add(Global.UserControl1 = new UserControl1()); Parent.Controls.Remove(this); } }
A seconda della scelta, va appunto nello UserControl2 o UserControl3. Entrambi gli userControl, altraverso un pulsante devono tornare allo UserControl1codice:private void button1_Click(object sender, EventArgs e) { Control[] controlCollectionMain = Parent.Parent.Controls.Find("MainPanel", true); if (radioButton1.Checked == true) { controlCollectionMain[0].Controls.Add(Global.UserControl2 = new UserControl2()); } else { controlCollectionMain[0].Controls.Add(Global.UserControl3 = new UserControl3()); } Parent.Controls.Remove(this); }
Qui il metodo presente sia nella classe UserControl2.cs sia nella classe UserControl3.cs
In pratica non faccio altro che aggiungere e rimuovere di volta in volta i controls dal MainPanelcodice:private void button13_Click(object sender, EventArgs e) { Control[] controlCollectionMain = Parent.Parent.Controls.Find("MainPanel", true); controlCollectionMain[0].Controls.Add(Global.UserControl1 = new UserControl1()); Parent.Controls.Remove(this); }
Secondo voi è una schifezza fatto in questo modo?
Potreste suggerirmi un modo più pulito per passare da uno user control ad un altro?
Grazie

Rispondi quotando