2011-01-12 1 views

Répondre

8

Bien sûr, c'est possible. Je ne connais aucun moyen de rendre automatique la connexion entre les deux contrôles, donc vous aurez l'écriture du code vous-même. Mais ne t'inquiète pas, ce n'est pas difficile.

Vous devez d'abord attacher un gestionnaire à l'événement déclenché par chaque contrôle lorsque sa valeur change. Assez logiquement, les deux contrôles cet événement la même chose: ValueChanged. Ensuite, dans chaque méthode de gestionnaire d'événements, vous pouvez définir par programme la valeur de l'autre contrôle sur la nouvelle valeur du premier contrôle. Par exemple:

void myNumericUpDown_ValueChanged(object sender, EventArgs e) 
{ 
    // Sync up the trackbar with the value just entered in the spinbox 
    myTrackBar.Value = Convert.ToInt32(myNumericUpDown.Value); 
} 

void myTrackBar_ValueChanged(object sender, EventArgs e) 
{ 
    // Sync up the spinbox with the value just set on the trackbar 
    myNumericUpDown.Value = myTrackBar.Value; 
} 

Il est évident que pour que cela fonctionne correctement, soit vous devez vous assurer que les contrôles ont la même gamme (valeurs maximales et minimales), ou ajouter des contrôles d'erreur dans le code ci-dessus.

+1

Ne résultera-t-il pas à des appels sans fin? – 26071986

+0

@ 26071986: Non, ce ne sera pas. Essayez-le et voyez. ;-) –

+0

Obtenir une boucle infinie d'appels d'événements comme le suggère @ 26071986 – whiteshooz

Questions connexes