Faire grisé un bouton

poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011 - 22 févr. 2011 à 01:24
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 - 24 févr. 2011 à 13:24
comment on fait pour faire grisé deux bouton dans un autre form , bon je vous explique j'ai deux form , le premier a 2 bouton , et l'autre en a 4 , je veux que quand j'appui sur le premier bouton de la form1 , les 4 bouton de la 2éme form devienent grisé et quand j'appui sur le deuxiéme bouton , il deviennent plus grisé .

19 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
22 févr. 2011 à 11:27
Bonjour,

Pour ce faire, il te suffit de jouer simplement avec la propriété "Enabled" de tes boutons.

Attention, cela désactivera les boutons. Je pars du principe que quand tu parles de griser les boutons, il s'agit de les désactiver.
Si non, il te faudra changer ton code de couleur au risque de perdre ton utilisateur (et dans ce cas, il te faudra jouer avec le ForeColor et BackColor de ton bouton).

Bon développement,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
2
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
22 févr. 2011 à 23:25
je veux faire grisé le bouton de la form 2 a partir d'un bouton de la form1
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
23 févr. 2011 à 09:24
Bonjour,

Tu veux beaucoup de choses mon cher ami mais "tu voudrais" serait plus poli (avec un "SVP, merci" à la fin et tu fais de moi un homme comblé pour la journée pour pas cher).

Pour ta demande, tu trouveras ton bonheur dans les liens suivants:
- Bidou: PASSAGE DE PARAMETRES.
- yelima: Passage de variable entre deux formulaires.

Le premier te propose plus de solution et le passage par event sera surement le plus adapté à ton choix (événement sur la Form1 envoyé lors du clic sur ton bouton => événement auquel s'abonne la Form2 pour griser ses boutons).

Bonne journée,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
24 févr. 2011 à 00:16
Merciiii beaucoup et désolé pour le dérangement ! :D
0

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

Posez votre question
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
24 févr. 2011 à 00:34
J'ai essayé avec le bouton , ca n'a pas marché...
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
24 févr. 2011 à 09:45
Salut,

Peux-tu nous donner plus de détails sur ton code ? (celui de la Form1 et Form2).
Car je ne vois pas comment t'éclairer plus.

Bonne journée,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
24 févr. 2011 à 09:52
comme je vous ai dis , le premier form contient juste 2 bouton , et le second form contient aussi 2 bouton , je veux que quand j'appui sur le premier bouton du form 1 les bouton de la form2 se grisent , ca consistera que 2 ligne de code.....merci d'avance ! :D
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
24 févr. 2011 à 10:05
Re,

Alors, je ne vois pas pourquoi cela ne marche pas avec les infos que je t'ai donné.
Et comment peux-tu prétendre que ca ne prend que deux lignes de code si ça ne marche pas de ton côté ? (perso, avant de commencer un projet, je ne sais pas combien de lignes de code je vais pondre... ;p ).
C'est pourquoi, je voudrais voir ton code pour essayer de voir si qu'il ne va pas.

Enfin, quoi qu'il en soit, il te suffit de faire un truc du style (j'ai pas contrôlé mon code car j'ai pas le temps de tester et tout):
public partial class Form2 : Form
{
  public Form2(Form1 parent)
  {
    // Abonnement à l'événement de clic sur le Button1 de la Form1
    parent.OnButton1Click += new EventHandler(OnForm1Button1Click);
  }

  protected void OnForm1Button1Click(object sender, EventArgs e)
  {
    // TO DO: griser les deux boutons...
  }
}

public partial class Form1 : Form
{
  public event EventHandler OnButton1Click = null;

  public void OpenForm2()
  {
    Form2 form2 = new Form2(this);
  }

  protected void Button1_Click(object sender, EventArgs e)
  {
    // Envoi de l'événement...
    if(OnButton1Click != null)
    {
      OnButton1Click(this, e);
    }
  }
}


Je ne peux pas faire plus pour toi. C'est à toi de jouer maintenant !

Bon courage,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
24 févr. 2011 à 10:39
merci pour ton aide , mais quand je fais griser les deux bouton dans la fonction
protected void OnForm1Button1Click(object sender, EventArgs e)
{
button1.Enabled = false;
button2.Enabled = false;
}
il me donne l'erreur suivante :
"La référence d'objet n'est pas définie à une instance d'un objet"
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
24 févr. 2011 à 10:47
Bonjour,

C'est surement parce que "button1" ou "button2" est égal à null... (à voir avec ton debugger).
Dans ce cas, cela signifie que ces boutons n'ont pas été créés.
Ta Form2 est-elle bien affichée ??? (si non, c'est normal que tes boutons soient null).

Sinon, je ne vois pas là.
Peux-tu nous donner plus de précision sur ton exception:
- Quelle ligne ?
- Quel objet est null ?
- etc...

Voila,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
24 févr. 2011 à 11:03
Form 1

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 passage_de_2_formulaire
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public event EventHandler OnButton1Click = null;
public void OpenForm2()
{
Form2 form2 = new Form2(this);
}
private void button1_Click(object sender, EventArgs e)
{

OpenForm2();
if (OnButton1Click != null)
{
OnButton1Click(this, e);
}
}
}
}

FORM 2

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 passage_de_2_formulaire
{
public partial class Form2 : Form
{
public Form2(Form1 parent)
{
parent.OnButton1Click += new EventHandler(OnButton1Click);
// OnForm1Button1Click
}
public void OnButton1Click(object sender, EventArgs e)
{

button1.Enabled = false;
button2.Enabled = false;
}
private void Form2_Load(object sender, EventArgs e)
{

}
}
}

chaque form a 2 bouton !
en ce qui concerne l'erreur
La référence d'objet n'est pas définie à une instance d'un objet.
cette exception est dans signalé sur button 1.enabled=false
qui est déja crée !
0
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
24 févr. 2011 à 11:18
Merci d'avance , et désolé encore une fois pour le dérangement !
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
24 févr. 2011 à 11:24
Cela me parait normal, ta Form2 est cachée lorsque tu envoies l'événement "OnButton1Click".
Donc, ton boutton n'est pas créé et est null.

Il te faut montrer la Form2 (dans OpenForm2) en ajoutant le code suivant:
Form2 form2 = new Form2(this);
form2.Show();


Maintenant, mon code n'est pas à prendre à la lettre. A toi de ré-organiser tout ça pour faire ce dont tu as besoin.

Cdlt,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
24 févr. 2011 à 11:28
oui , mais meme si il affiche la form2 , il y a toujours cette erreur dans le button1.enabled=false , La référence d'objet n'est pas définie à une instance d'un objet.
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
24 févr. 2011 à 11:35
Effectivement, en même temps, je n'avais pas vu que tu avais enlevé l'appel de la méthode "InitializeComponent();" de ta Form2.
C'est cette méthode qui créé tes boutons.

Il te faut donc les constructeurs suivant pour ta Form2:
public Form2()
{
  InitializeComponent();
}

public Form2(Form1 parent)
  : this() // Appel le constructeur par défaut !
{
  parent.OnButton1Click += new EventHandler(OnButton1Click);
}


Ca devrait être mieux maintenant.

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
24 févr. 2011 à 11:41
j'ai essayé , il n'y pas de contructeur (this)
ca serai mieux , sie je t'envoyais sur ca sur ta boite , passe moi ton email !
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
24 févr. 2011 à 12:01
As-tu au moins essayé de copier coller le dernier code que je t'ai envoyé ?

Le this() est un mot clé en C# qui appelle le constructeur par défaut (ie, celui sans argument):
"this()" appelle "public Form2()" qui ds son corps appelera "InitializeComponent();"

Je pense que je t'ai plus que lancé sur la pente de la réussite là...

C'est la bonne cette fois,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
poomen Messages postés 117 Date d'inscription dimanche 2 janvier 2011 Statut Membre Dernière intervention 25 mars 2011
24 févr. 2011 à 12:09
Si si , je l'est utilisé mais toujours l'erreur sur le bouton....!! :S
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
24 févr. 2011 à 13:24
Ta fonction "InitializeComponent()" doit créer tes boutons. Sinon, tu as un bug à corriger.

Essaie de trouver la raison qui fait que ton bouton n'est pas créé.

Courage,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Rejoignez-nous