Come posso sincronizzare i valori dei controlli NumericUpDown e trackbar in WinForms?
-
10-10-2019 - |
Domanda
ho semplice applicazione Windows Form (non WPF), e ho due controlli su di esso:
- TrackBar
- NumericUpDown
Voglio fare un po 'di legame tra di loro, quindi se uno di loro ha il suo cambio di valore, l'altro controllo verrà aggiornata per mostrare lo stesso valore.
È possibile? Se sì, come posso farlo?
Grazie.
Soluzione
Certo, è possibile. Non so di un modo per rendere il collegamento tra i due controlli automatici, in modo da avere la scrittura del codice da soli. Ma non preoccupatevi, non è difficile.
devi prima di collegare un gestore all'evento che viene generato da ogni controllo quando il suo valore cambia. Logicamente, entrambi controlla questo evento la stessa cosa: ValueChanged
. Poi, in ogni metodo del gestore dell'evento, è possibile impostare a livello di codice il valore dell'altro controllo per il nuovo valore del primo controllo. Ad esempio:
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;
}
Ovviamente per far funzionare correttamente, si sia bisogno di fare in modo che i controlli hanno lo stesso range (valori massimi e minimi), o aggiungere alcuni controlli di errore per il codice di cui sopra.