TrackBar flemmarde

Résolu
cs_arnold99
Messages postés
6
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
30 juillet 2004
- 29 juil. 2004 à 14:19
cs_arnold99
Messages postés
6
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
30 juillet 2004
- 30 juil. 2004 à 10:22
Bonjour bonjour,

alors voilà j'essaye depuis un certain temps de modifier la Value d'une TrackBar qui se trouve sur une fenêtre (disons A), et ce en fonction d'évènements qui se déroulent sur une autre fenêtre (disons B).

Je n'arrive pas à modifier maTrackBar.Value depuis B.
Ca doit certainement être très con, mais là nan y'a pas moyen que ça tourne :)

si qq'un peut m'expliquer vite fait comment on fait ça...

8 réponses

cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
98
29 juil. 2004 à 18:33
en fait en relisant je me demande vraiment si tu veux bosser en MDI

une petite methode si tu veux garder tes 2 forms indépendants l'un de l'autre : utiliser les events

Pour l'exemple je veux faire bouger le curseur de la trackbar du form1 via 2 boutons sur le form2

Form1 (ta fenetre A) : form principal de l'appli, possede la trackBar
Form2 (ta fenetre B) : possede 2 boutons : "Plus" et "Moins" (oui, tres inspiré aujourd'hui ^^)

dans le Form2 définir :
public event EventHandler MoinsClicked;
public event EventHandler PlusClicked;

(j'ai pris le EventHandler de base comme tu n'as pas d'information particulière a fournir)

toujours dans form 2 : les méthodes associées aux event Click des boutons :
private void button_Moins_Click(object sender, System.EventArgs e)
{
// si au moins un abonnement à l'event a été établi, 
// on le déclenche, 
// l'abonné sera donc averti que le button "Moins" du Form2 a été cliqué
if ( MoinsClicked != null )
MoinsClicked(this, new EventArgs());
}

private void button_Plus_Click(object sender, System.EventArgs e)
{
// si au moins un abonnement à l'event a été établi, 
// on le déclenche, 
// l'abonné sera donc averti que le button "Plus" du Form2 a été cliqué
if ( PlusClicked != null )
PlusClicked(this, new EventArgs());
}


maintenant dans le Form1 :
form2 = new Form2();
// abonemment à l'event MoinsClicked (que Form2 déclenche quand son bouton "Moins" est cliqué)
form2.MoinsClicked += new EventHandler(form2_MoinsClicked);
// abonemment à l'event PlusClicked (que Form2 déclenche quand son bouton "Plus" est cliqué)
form2.PlusClicked += new EventHandler(form2_PlusClicked);


et toujours dans form1 les 2 méthodes associées au event MoinsClicked et PlusClicked :
private void form2_MoinsClicked(object sender, EventArgs e)
{
if ( trackBar1.Value > trackBar1.Minimum )
trackBar1.Value--;
}

private void form2_PlusClicked(object sender, EventArgs e)
{
if ( trackBar1.Value < trackBar1.Maximum )
trackBar1.Value++;
}


Cocoricoooooooo !!!!
3
taoetc
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
29 juil. 2004 à 16:21
Alors dison que tu as fait les choses comme ca. Ta fenetre A est ta fenetre principale, ta fenetre B est ta fenetre enfant de A.

Pour que ca marche il faut :
1. qua ta trackbar soit déclaré comme public ( barbare mais ca marche, tu peux autrement appelé une fonction de ta fenetre A qui modifie la valeur de la track bar , cettez fonction étant public., c plus propre.
Apres,
dans ta fenetre B, ou dans l'événement,

fait un truc du genre :

frmA FenetreParent = new frmA();
FenetreParent = (frmA) this.MDIParent;

FenetreParent.ModifierValeurTrackBar( valeur TrackBar);

ca ca marche, apres, il y a peut etre plus propre
0
cs_arnold99
Messages postés
6
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
30 juillet 2004

29 juil. 2004 à 17:18
Bon,

alors en debug, il apparait que jusqu'à:
frmA FenetreParent = new frmA();
tout va bien, et dès qu'arrive :
FenetreParent = (frmA)this.MDIParent;
là c le drame, il trouve pas la fenêtre et je me paye un FenetreParent=<valeur non définie>.

à noter que tout est bien public (TrackBar et fonction de mise à jour de la trackbar).
0
taoetc
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
29 juil. 2004 à 17:24
Question comment lance tu ta fenetre B?

Il faut que ta fenetre A puisse contenir des fenetre MDI (IsMDiContainer = true)

puis lance ta fenetre B comme suit
:
private void lanceFenetreEnfant( System.Windows.Forms.Form ihmEnfant)
{
ihmEnfant.AutoScale = false;
ihmEnfant.MdiParent = this;
hmEnfant.FormBorderStyle = FormBorderStyle.None;
ihmEnfant.Show();
ihmEnfant.AutoScale = true;
ihmEnfant.Dock = DockStyle.Fill;
}

le truc le plus important la dedans , c'est ihmEnfant.MdiParent = this;
Apres, ce que je t'ai donné avant marche
0

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

Posez votre question
cs_arnold99
Messages postés
6
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
30 juillet 2004

29 juil. 2004 à 17:29
en réalité, c'est le this.MdiParent qui est pas trouvé
0
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
98
29 juil. 2004 à 18:09
tu as mit la propriété IsMDIContainer du Form parent à true ?

Cocoricoooooooo !!!!
0
taoetc
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
30 juil. 2004 à 08:42
Ca m'a l'air d'être plus ce qu'il veut, et c pas con :big)
j'ai parlé de MDI parce que j'ai entendu track bar donc voila.
0
cs_arnold99
Messages postés
6
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
30 juillet 2004

30 juil. 2004 à 10:22
oui effectivement j'utilise rien en Mdi.

Là c bon, ça met à jour, c'est parfait, merci beaucoup à coq, et merci aussi à taoetc.
0