private void btnConnect_Click(object sender, RoutedEventArgs e) { //Si aucune session n'est sélectionné dans la dataGrid, fait jouer un petit beep d'erreur windows. if (dgSessions.SelectedIndex != -1) { //Non-nulleable (struct), donc forced cast. Type assumé. Session newSession = (Session)dgSessions.SelectedItem; //Si nous voulons nous connecter à la session déjà active, il n'y a rien d'autre à faire. if (SessionActive == newSession) { return; } //Valide si le compte actuel existe sur la nouvelle session spécifié et s'il est admins. //Sinon l'utilisateur se coupe la branche sous les pieds. if (!IsAdminOnNewConnexion(newSession.ToConnexionString())) { MessageBox.Show("Impossible de se connecter. Est-ce que votre compte existe sur la base de données et êtes vous administrateur?", "Erreur de connexion", MessageBoxButton.OK, MessageBoxImage.Error); return; } //Lance la méthode pour faire le changement de session active dans l'UI (le mettre en gras). //Prend comme paramètre l'index dans obsSessions de l'ancienne session et la prochaine. SwitchActive(obsSessions.IndexOf(SessionActive), obsSessions.IndexOf(newSession)); SessionActive = newSession; //Enregistre la nouvelle session active dans la configuration du logiciel. Properties.Settings.Default.ActiveSession = "{" + SessionActive.ToString() + "}"; Properties.Settings.Default.Save(); //Récupère l'instance de mainWindow et lance la méthode Configurer pour reconstruire les services MySql avec la nouvelle connexion. IApplicationService mainWindow = ServiceFactory.Instance.GetService <IApplicationService>(); mainWindow.Configurer(); //Retourne au menu principal connecté parce qu'il est déjà connecté s'il a eu accès â MenuConnexion et pour garantir un état valide si par example //il était dans une fenêtre qui utilisait les services MySql de l'ancienne connexion. mainWindow.ChangerVue(new MenuPrincipalConnecte()); } else { //Beep d'erreur microsoft. SystemSounds.Beep.Play(); } }