Désactiver menu dans Form principal

Résolu
koukougnon1994 Messages postés 6 Date d'inscription lundi 27 janvier 2014 Statut Membre Dernière intervention 2 février 2014 - 27 janv. 2014 à 19:21
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 - 2 févr. 2014 à 17:48
Salut à tous,
Je suis nouveau en développement C# et déjà je rencontre un problème :
Je développe une application Windows Form avec une form principale qui contient différents menus. Je voudrais désactiver un des menus de ma Form principal à partir d'un bouton d'une autre Form.
j'ai besoin de vos aides.
Merci.

8 réponses

Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
Modifié par Whismeril le 27/01/2014 à 21:21
Bonjour, il te faut passer la référence de ton menu dans les autre formulaires.

Tu peux par exemple passer en paramètre dans le constructeur:
public form2(menu MonMenu)
{
......
}



et dans form1
form2 maForm1 = new form2(menuAcacher);
0
koukougnon1994 Messages postés 6 Date d'inscription lundi 27 janvier 2014 Statut Membre Dernière intervention 2 février 2014
31 janv. 2014 à 12:12
Merci pour ton aide, ça fonctionne en mettant d'abord la propriété du menu à Public

Je voudrais ton aide, si possible, pour un autre problème qui est le suivant:
J'ai mon menu principal et une form de connexion. L'utilisateur de l'application doit entrer son login et mot de passe, si c'est ok la form de connexion active le menu principal qui était désactivé.
Ce que je veux c'est de récupérer le login de l'utilisateur pour l'utiliser partout dans l'application (une variable accessible par toutes les form de l'application).
Merci.
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
31 janv. 2014 à 13:01
Bonjour
ça fonctionne en mettant d'abord la propriété du menu à Public
ça ne devrait pas. Peux tu poster ton code, en utilisant les balises de coloration

Attention pour le csharp, il y a un petit bug, quand on le choisit dans la liste déroulante, il manque le "s", il faut le rajouter à la main.


Ici un exemple de passage de données:
http://codes-sources.commentcamarche.net/source/26735-passage-de-parametres
0
koukougnon1994 Messages postés 6 Date d'inscription lundi 27 janvier 2014 Statut Membre Dernière intervention 2 février 2014
31 janv. 2014 à 16:49
Comme je l'ai dit je change d'abord la propriété 'Mofidiers' de mon menu à 'Public'.

Dans ma form de connexion (construteur) :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace EcoleAdministration
{
    public partial class frmFichierConnexion : Form
    {
        public static string NomUtilisateur = null;
        public static string FonctionUtilisateur = null;
        

        public frmFichierConnexion()
        {
            InitializeComponent();
        }

        private void btnAnnulerFichierConnexion_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void ConnexionUtilisateur()
        {
            if (String.IsNullOrEmpty(txtNomUtilisateurFichierConnexion.Text))
            {
                MessageBox.Show("Vous n'avez pas saisi votre nom utilisateur", "Connexion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtNomUtilisateurFichierConnexion.Select();
                return;
            }
            if (String.IsNullOrEmpty(txtMotDePasseFichierConnexion.Text))
            {
                MessageBox.Show("Vous n'avez pas saisi votre mot de passe", "Connexion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtMotDePasseFichierConnexion.Select();
                return;
            }

            OleDbConnection CONNEXION_BASE = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0;Data Source=D:\RV\Etudes\CSharp\EcoleAdministration.accdb");

            using (CONNEXION_BASE)
            {
                //  Ouverture de la connection
                CONNEXION_BASE.Open();

                //Creation d'un commande (requette) de lecture
                using (OleDbCommand COMMANDE = new OleDbCommand())
                {
                    //Association de la commande avec la connection
                    COMMANDE.Connection = CONNEXION_BASE;

                    //Définition de la requette SQL
                    COMMANDE.CommandText = "SELECT * FROM Utilisateurs WHERE NomUtilisateur = @NOMUTILISATEUR And MotDePasseUtilisateur= @MOTDEPASSEUTILISATEUR";

                    //Utilisation de parametre TRES IMPORTANT pour éviter les injections SQL
                    //On a tous quelque chose avec les kevin sur le net, mais ici ce n'est juste qu'arbitraire et a titre d'exemple
                    //COMMANDE.Parameters.Add("NOM", txtNomUtilisateurEmployeParametreConnexion.Text);
                    COMMANDE.Parameters.AddWithValue("NOM", txtNomUtilisateurFichierConnexion.Text);
                    COMMANDE.Parameters.AddWithValue("MOTDEPASSEUTILISATEUR", txtMotDePasseFichierConnexion.Text);
                    // Execution de la requette et lecture du résultat en mode connecté
                    OleDbDataReader reader = COMMANDE.ExecuteReader();

                    //Si le résultat comporte pas des lignes
                    if (!reader.HasRows)
                    {
                        MessageBox.Show("Erreur dans vos paramètres de connexions", "Connexion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        //txtNomUtilisateurFichierConnexion.Select();
                        return;
                    }

                    while (reader.Read())
                    {
                        //Comparer la casse des lettres saisies
                        if (reader["NomUtilisateur"].ToString() != txtNomUtilisateurFichierConnexion.Text)
                        {
                            MessageBox.Show("Erreur dans vos paramètres de connexions", "Connexion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            //txtNomUtilisateurFichierConnexion.Select();
                            return;
                        }
                        //Comparer la casse des lettres saisies
                        if (reader["MotDePasseUtilisateur"].ToString() != txtMotDePasseFichierConnexion.Text)
                        {
                            MessageBox.Show("Erreur dans vos paramètres de connexions", "Connexion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            //txtNomUtilisateurFichierConnexion.Select();
                            return;
                        }
                    }

                    //fermeture de la lecture
                    reader.Close();
                }

                //  Fermeture de la connexion
                CONNEXION_BASE.Close();
                NomUtilisateur = txtNomUtilisateurFichierConnexion.Text;
//passage de paramètre
                MenuPrincipal newform = (MenuPrincipal)Owner;
                newform.MenuFichierConnexion.Enabled = false;
                newform.MenuFichierDeconnexion.Enabled = true;
                newform.MenuEmployeParametresDeConnexion.Enabled = true;
                newform.Text += " \\Utilisateur connecté : " + NomUtilisateur;
                this.Close();
            }       
        }

        private void btnValiderFichierConnexion_Click(object sender, EventArgs e)
        {
            ConnexionUtilisateur();
        }


    }
   

}


et dans la form principale ou se trouve les menus à désacticer :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace EcoleAdministration
{
    public partial class MenuPrincipal : Form
    {
        public MenuPrincipal()
        {
            InitializeComponent();
        }

        private void MenuFichierConnexion_Click(object sender, EventArgs e)
        {
//Affichagage de la form de connexion            
frmFichierConnexion newform = new frmFichierConnexion();
            newform.Owner = this;
            newform.ShowDialog();
        }

        private void MenuFichierDeconnexion_Click(object sender, EventArgs e)
        {
            this.MenuFichierConnexion.Enabled = true;
            this.MenuFichierDeconnexion.Enabled = false;
        }

        private void MenuFichierQuitter_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

    }


J'espère que tu arriveras à me lire sans difficulté fait moi signe si tu as des suggestion ou autres.
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
31 janv. 2014 à 16:57
oui j'ai une petite difficulté, tu n'as pas rajouté le "s", comme je te l'avais demandé et c'est tout gris.
on va s'en sortir quand même.
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
31 janv. 2014 à 17:01
Ha oui c'est normal, tu es passé par le Owner, comme ce n'était pas la proposition que je t'avais fait je ne comprenais pas.
Ça marche aussi.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
koukougnon1994 Messages postés 6 Date d'inscription lundi 27 janvier 2014 Statut Membre Dernière intervention 2 février 2014
2 févr. 2014 à 16:00
Je n'arrivais pas avec ta méthode, je m'y prend mal surement voici mes codes corrige moi :
Dans ma form principal nommé MenuPrincipal :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class MenuPrincipal : Form
    {
        public MenuPrincipal()
        {
            InitializeComponent();
        }

        private void connexionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmConnexion newfrm = new frmConnexion(MenuFichierConnexion);
            newfrm.ShowDialog();
        }
    }
}


et dans ma form frmConnexion qui est appelée par le menu MenuFichier :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class frmConnexion : Form
    {
        public frmConnexion(Menu menufichierconnexion)
        {
            InitializeComponent();
        }

        private void btnValiderFichierConnexion_Click(object sender, EventArgs e)
        {
            MenuPrincipal.MenuFichierConnexion.Enabled = false;
            this.Close();
        }
    }
}


excuse moi pour les couleurs je ne maîtrise pas.

J'en profite pour te demander sais tu comment faire un combo multi colonne en visual C#.

Merci encore pour tes aides
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
2 févr. 2014 à 16:25
Concernant, le combobox multicolore, la question a déjà été évoquée dans le forum, fais une recherche.
Si tu ne trouves pas ton bonheur, ouvre un post dédié.
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
2 févr. 2014 à 16:23
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class frmConnexion : Form
    {

        private Menu monmenufichierconnexion;//crée une variable interne dont la portée inclue le constructeur, et la méthode associé à ton bouton
        public frmConnexion(Menu menufichierconnexion)
        {
            InitializeComponent();
            monmenufichierconnexion = menufichierconnexion;
        }

        private void btnValiderFichierConnexion_Click(object sender, EventArgs e)
        {
            monmenufichierconnexion.Enabled = false;
            this.Close();
        }
    }
}



mais rien ne t'oblige à utiliser cette solution, d'autant que tu en as trouvé une qui fonctionne.
0
koukougnon1994 Messages postés 6 Date d'inscription lundi 27 janvier 2014 Statut Membre Dernière intervention 2 février 2014
2 févr. 2014 à 17:19
Tu as a raison mais une idée de plus ne me ferait pas de mal.
Et pour créer une combo multi colonne?
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
2 févr. 2014 à 17:48
0
koukougnon1994 Messages postés 6 Date d'inscription lundi 27 janvier 2014 Statut Membre Dernière intervention 2 février 2014
2 févr. 2014 à 17:26
ok merci
0
Rejoignez-nous