IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET]Comment rendre les menus inaccessible?


Sujet :

Windows Forms

  1. #1
    Membre du Club Avatar de Pedro Varela
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Points : 62
    Points
    62
    Par défaut [VB.NET]Comment rendre les menus inaccessible?
    Bonjour,

    Voilá que ça fait pratiquement 1 semaine que je suis bloqué.
    Avant toute chose: Je developpe en VS 2003 en utilisant VB.Net
    J'ai 2 formulaires: Form1 et Form2.
    Le formulaire Form1 (formulaire pére avec IsMdiContainer=True) contient des Menus et sous-menus que j'ai créé en utilisant le controle MainMenu de la boîte á utils. Le formulaire Form2 ne contient aucun menu, seulement des zones textes et des bouttons.

    Je souhaite rendre certains de ces sous-menus inaccessible á partir de Form2,
    en utilisant la propriéte Enabled=False dans mon code de Form2. Et c'est la justement que je suis bloqué.

    Quequ'un sait comment puis-je le faire ? Quel est le truc ?

    En résumé: Comment acceder aux menu's et sous-menus d'un formulaire á partir d'un autre formulaire.

    Merci d'avance.

  2. #2
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Form1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	private void button1_Click(object sender, EventArgs e)
    		{
    			Form2 f = new Form2();
    			f.Show();
    			f.EnabledButton = false;
     
    		}
    form2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public bool EnabledButton
    		{
    			set { button1.Enabled = value; }
    		}
    Cette logique fonctionne si c'est le formulaire parent(form1) qui veux interagir avec des controles sur le formulaire enfant(form2).

    Dans le cas que si ca serais form2 qui voudrais interagir avec le form1, moi je fonctionnerais avec un événement car pour avoir une bonne logique il faut se dire:
    Un form parent connait sont form enfant
    Un form enfant ne connait pas sont form parent

    [edit]
    Je viens de relire ton message et ce que tu veux faire, c'est modifier le form parent via le form enfant, moi je le ferais avec événement. Je te conseil de lire un peu de doc sur ca. Biensur, cela peut se faire de d'autre manière, mais cela ne sera pas un bon design!!
    [/edit]

  3. #3
    Membre du Club Avatar de Pedro Varela
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Points : 62
    Points
    62
    Par défaut
    Merci pour ton aide, mais depuis lá les choses ne se sont pas très évoluées.
    Je suis toujours... ben!! bloqué!

    Si vous avez quelques choses que pourrais m´être util, n'hesitez pas á m'en faire parti.

    Merci

  4. #4
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Je te dirais de lire des tutorials et de te pratiquer. C'est dure de te debugger quand on as aucun bout de code.

    Peux-tu nous montré ce que tu as de fait pour l'instant ?

  5. #5
    Membre du Club Avatar de Pedro Varela
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Points : 62
    Points
    62
    Par défaut
    Croyez-moi, je passe la journée cherchant sur Google. Mais pour l'instant rien...

    Je juge que la description de mon blocage est clair. Pour cela je ne vous ai pas donné le code. Ben, vous l'aurez demain.

  6. #6
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Bonjour,

    Il faut récupérer l'évenement d'ouverture du menu dans ta form2.

    Ajoute ceci dans le Load du formulaire, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    PrivateSub Form2_Load( _
                        ByVal sender AsObject, 
                        ByVal e As System.EventArgs _
                        ) HandlesMyBase.Load
     
        AddHandlerMe.MdiParent.MenuStart, AddressOf Form1_MenuStart
    EndSub
     
     
    PrivateSub Form1_MenuStart( _
                        ByVal sender AsObject, _
                        ByVal e As System.EventArgs _
                        )
     
        ' Traitement pour activer/désactiver des éléments du menu ...
        ' Me.MdiParent.MonMenuPricipal...
    EndSub

  7. #7
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Voila le code c#, a toi de te débrouiller pour le traduire en vb.net

    Form2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    namespace WindowsApplication4
    {
    	public partial class Form2 : Form
    	{
    		public Form2()
    		{
    			InitializeComponent();
    		}
     
    		private void Form2_Load(object sender, EventArgs e)
    		{
    			if (OnForm2Load != null)
    				OnForm2Load(this, EventArgs.Empty);
    		}
    		public event EventHandler<EventArgs> OnForm2Load;
    		public event EventHandler<EventArgs> OnForm2Close;
     
    		private void Form2_FormClosed(object sender, FormClosedEventArgs e)
    		{
    			if (OnForm2Close != null)
    				OnForm2Close(this, EventArgs.Empty);
    		}
    	}
    }
    Form1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    namespace WindowsApplication4
    {
    	public partial class Form1 : Form
    	{
    		public Form1()
    		{
    			InitializeComponent();
     
    		}
     
     
    		void f_OnForm2Close(object sender, EventArgs e)
    		{
    			//Do something
    		}
     
    		void f_OnForm2Load(object sender, EventArgs e)
    		{
    			//Do something
    		}
     
    		private void openForm2ToolStripMenuItem_Click(object sender, EventArgs e)
    		{
    			Form2 f = new Form2();
    			f.MdiParent = this;
    			f.OnForm2Load += new EventHandler<EventArgs>(f_OnForm2Load);
    			f.OnForm2Close += new EventHandler<EventArgs>(f_OnForm2Close);
    			f.Show();
    		}
     
    		private void closeForm2ToolStripMenuItem_Click(object sender, EventArgs e)
    		{
     
    		}

    J'ai utiliser les événements car c'est la solution la plus logique. Le form2 ne connais pas le form1. Seulement le form1 connais le form2. Oui bien sur il est possible daccèder au item du form1 a partir du form2 mais ceci est une très mauvaise facon de faire

  8. #8
    Membre du Club Avatar de Pedro Varela
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Points : 62
    Points
    62
    Par défaut
    Merci á tous d'avoir tenté si bien que mal á m'aider.

    Voilá que j'ai résolu mon blocage!! Aprés quelques jours de dure casse-tête... Ben, rien de très graves, c'est comment ça la programmation...

    Voici comment je l'ai résolu:

    Dans Form1 j'ai écrit:

    Public Sub EnableMenuItem(ByVal item As Integer)
    Select Case item
    Case 0
    Me.MenuItem1.Enabled = True
    Me.MenuItem2.Enabled = True
    Case 1
    Me.MenuItem1.Enable = False
    Me.MenuItem2.Enabled = False
    End Select
    End Sub

    Et dans Form2 j'ai fait comme ça:

    Public Sub btnValider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnValider.Click

    If txtNom.Text="Jachie" Then
    DirectCast(Me.MdiParent, Form1).EnableMenuItem(1)
    Else
    DirectCast(Me.MdiParent, Form1)EnableMenuItem(0)
    End If

    End Sub

    Ce que me créais des difficultés, ce que je ne savais pas comment faire communiquer ces 2 Forms.

    Voilá, c'étais pas très compliqué mais je débute...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.Net] Comment rendre les élements du menu shared
    Par Pedro Varela dans le forum Windows Forms
    Réponses: 2
    Dernier message: 12/10/2006, 15h13
  2. Réponses: 5
    Dernier message: 27/04/2005, 16h49
  3. [ADO.NET] Comment rendre une certaine colonne "AutoIncrement" ?
    Par maitrebn dans le forum Accès aux données
    Réponses: 3
    Dernier message: 23/03/2005, 22h12
  4. [VB.NET] Comment lister les ordinateurs d'un réseau
    Par Jan-t dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/03/2005, 08h44
  5. Comment retrouver les menus complets de Access ???
    Par sweety107 dans le forum Access
    Réponses: 3
    Dernier message: 20/12/2004, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo